Gunakan operasi kurangkan untuk beroperasi pada objek
P粉423694341
P粉423694341 2023-08-18 14:05:11
0
1
441

Ini adalah input saya:{field1: {field2:'123', field3:{field4:'123'}}}

Sasaran ialah:{field1: {kemas kini: {field2:'123', field3: {update: {field4:'123'}}

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.

P粉423694341
P粉423694341

membalas semua (1)
P粉909476457

Anda mempunyai dua soalan, yang pertama ialahupdateDirectHelper函数没有返回任何内容。虽然在这个函数中有一个return语句,但实际上它是嵌套在reduce的回调函数(updateClause, [key, value]) => {中,而不是updateDictHelperanda sendiri.

Satu lagi soalan anda ialah bagaimana untuk mendapatkan nilai awal untukacc提供默认值。Reduce原生支持可选的第二个参数,该参数将作为acc.

reduce(callbackFn, initialValue)

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);
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!