두 개의 동적 개체 배열 병합: 두 개의 동적 개체 배열을 하나로 병합합니다.
P粉903969231
2023-08-18 14:53:48
<p>아래 표시된 대로 두 개체의 동적 배열이 있습니다(이것은 n 개체의 동적 배열입니다). </p>
<pre class="brush:php;toolbar:false;">serverArray = [
{"id":"field1","필수":false,"visible":false},
{"id":"field2","필수":false,"visible":false},
{"id":"field3","필수":false,"visible":false},
{"id":"field4","필수":false,"visible":false}
]
로컬 배열 = [
{"id":"field1"},
{"id":"field2","필수":false},
{"id":"field3","필수":true,"visible":false},
{"id":"field4","필수":false,"visible":true},
{"id":"field5","필수":false,"visible":true},
{"id":"field6","필수":true,"visible":false},
]</pre>
<p>두 배열을 다음과 같이 동일한 ID를 가진 개체로 병합했습니다. </p>
<pre class="brush:php;toolbar:false;">for (let x = 0; x < serverArray.length; x++) {
for (let 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' 등
serverArray[x][key] = localArray[y].hasOwnProperty(key) ? localArray[y][key] : serverArray[x][key]; //최종 반환 응답에서 로컬 필드 속성 값(있는 경우)으로 재정의
}
}
}
}</pre>
<p>그러나 최종 <code>serverArray</code>에는 <code>serverArray</code>에 없는 ID도 포함하고 싶습니다(예: <code>field5</). 위의 code>, <code>field6</code>), 이러한 필드도 위 조건을 충족하지 못합니다(예: <code>serverArray[x].id == localArray[y].id</code>). 이 필드가 최종 <code>serverArray</code>의 일부로도 포함되기를 바랍니다. 즉, 최종 <code>serverArray</code>에는 다음 두 개체도 포함되어야 합니다. </p>
<pre class="brush:php;toolbar:false;">{"id":"field5","mandatory":false,"visible":true},
{"id":"field6","필수":true,"visible":false},</pre>
<p>이 요구 사항을 충족할 수 있는 방법이 있나요? </p>
두 배열을 반복하는 동안 병합된 필드를 추적하기 위해 새 개체를 만들 수 있습니다. 초기 병합 후 localArray를 다시 반복하여 아직 serverArray에 병합되지 않은 필드를 식별하고 이를 병합된 결과에 추가할 수 있습니다.
으아악