Ini adalah input saya:
Sasaran ialah:
Ini yang saya cuba:
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)}} } }) } Namun, saya tidak boleh membuatnya berfungsi walau apa pun. Saya sangat baru dengan Java/TypeScript dan sebarang bantuan akan sangat dihargai.
Anda mempunyai dua soalan, yang pertama ialah
updateDirectHelper函数没有返回任何内容。虽然在这个函数中有一个return语句,但实际上它是嵌套在reduce的回调函数(updateClause, [key, value]) => {中,而不是updateDictHelperanda 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:const arrayWithOneElement = [1]; const res = arrayWithOneElement.reduce(() => { console.log("I never run"); }); // 注意没有第二个参数 console.log(res);