Gabungkan dua tatasusunan objek dinamik: Cantumkan dua tatasusunan objek dinamik menjadi satu
P粉903969231
2023-08-18 14:53:48
<p>Saya mempunyai tatasusunan dinamik dua objek seperti yang ditunjukkan di bawah (ini ialah tatasusunan dinamik bagi n objek): </p>
<pre class="brush:php;toolbar:false;">serverArray = [
{"id":"field1","mandatory":false,"visible":false},
{"id":"field2","mandatory":false,"visible":false},
{"id":"field3","mandatory":false,"visible":false},
{"id":"field4","mandatory":false,"visible":false}
]
localArray = [
{"id":"field1"},
{"id":"field2","mandatory":false},
{"id":"field3","mandatory":true,"visible":false},
{"id":"field4","mandatory":false,"visible":true},
{"id":"field5","mandatory":false,"visible":true},
{"id":"field6","mandatory":true,"visible":false},
]</pre>
<p>Saya menggabungkan dua tatasusunan menjadi objek dengan ID yang sama seperti ini: </p>
<pre class="brush:php;toolbar:false;">for (biar x = 0; x < serverArray.length; x++) {
untuk (biar y = 0; y < localArray.length; y++) {
if (serverArray[x].id == localArray[y].id) { // serverArray[x].id/localArray[y].id = 'field1', 'field2'
for (let key in localArray[y]) { //key = 'id', 'mandatory', dsb
serverArray[x][key] = localArray[y].hasOwnProperty(key) ? localArray[y][key] : serverArray[x][key];
}
}
}
}</pre>
<p>Walau bagaimanapun, saya juga ingin memasukkan dalam <code>serverArray</code> ID yang tiada dalam <code>serverArray</code> (iaitu <code>field5</ dalam contoh kod di atas>, <kod>field6</code>), dan medan ini juga akan gagal dalam keadaan di atas (iaitu <kod>serverArray[x].id == localArray[y].id</code>), Saya harap Medan ini turut disertakan sebagai sebahagian daripada <code>serverArray</code>, iaitu <code>serverArray</code> juga harus mengandungi dua objek berikut: </p>
<pre class="brush:php;toolbar:false;">{"id":"field5","mandatory":false,"visible":true},
{"id":"field6","mandatory":true,"visible":false},</pre>
<p>Adakah terdapat sebarang cara untuk mencapai keperluan ini? </p>
Semasa menggelung melalui kedua-dua tatasusunan, anda boleh mencipta objek baharu untuk menjejaki medan yang digabungkan. Selepas penggabungan awal, anda boleh mengulangi localArray sekali lagi untuk mengenal pasti medan yang belum digabungkan ke dalam serverArray dan menambahnya pada hasil gabungan.