Gunakan operasi kurangkan untuk beroperasi pada objek
P粉423694341
2023-08-18 14:05:11
<p>Ini adalah input saya:<kod>{field1: {field2:'123', field3:{field4:'123'}}}</code></p>
<p>Sasaran ialah:<kod>{field1: {kemas kini: {field2:'123', field3: {update: {field4:'123'}}</code></p>
<p>Ini yang saya cuba: </p>
<pre class="brush:php;toolbar:false;">function updateDictHelper(obj) {
Object.entry(obj).reduce((updateClause = {}, [kunci, nilai]) => {
jika (jenis nilai !== 'objek') {
kembalikan {... updateClause, [key]: value}
} lain {
kembalikan {... updateClause, [key]: {update: updateDictHelper(value)}}
}
})
}</pre>
<p>Namun, saya tidak boleh membuatnya berfungsi walau apa pun. Saya sangat baru dengan Java/TypeScript dan sebarang bantuan akan sangat dihargai. </p>
Anda mempunyai dua soalan, yang pertama ialah
updateDirectHelper
函数没有返回任何内容。虽然在这个函数中有一个return
语句,但实际上它是嵌套在reduce
的回调函数(updateClause, [key, value]) => {
中,而不是updateDictHelper
anda sendiri.Satu lagi soalan anda ialah bagaimana untuk mendapatkan nilai awal untuk
acc
提供默认值。Reduce原生支持可选的第二个参数,该参数将作为acc
.Pendekatan terbaik ialah memberikan nilai awal apabila boleh. Jika anda tidak memasukkannya, fungsi panggil balik
.reduce()
将跳过回调的第一个调用,并从将acc
设置为数组中的第一个值开始调用回调函数,并将第二个参数设置为数组中的第二个值。如果您的数组只有一个值,例如在您的情况下,那么这个单个值就是从.reduce()
调用中返回的值,并且您的.reduce()
tidak akan dipanggil: