Lodash 병합을 사용하여 이 두 개체를 병합하려고 합니다.
서버 개체:
[
{
"id": "74738",
"customerId": "534430"
},
{
"id": "74742",
"customerId": "534429"
}
]
로컬 개체
[
{
"customerId": "534429"
"name": "ABC"
},
{
"customerId": "534430",
"name": "XYZ"
},
]
속성을 기반으로 이 두 객체를 결합하기 위해 lodash merge를 사용하고 있으며 아래 code를 사용하고 있습니다.
merge({}, serverObject, localObject);
//Output: [{"id":"74738","customerId":"534429","name":"ABC"},{"id":"74742","customerId":"534430","name":"XYZ"}]
객체는 고객 ID를 기반으로 업데이트되지 않고 대신 로컬 개체의 순서에 따라 업데이트됩니다.
예상 출력:
[{"id":"74738","customerId":"534430","name":"ABC"},{"id":"74742","customerId":"534429","name":"XYZ"}]
- 답변 # 1
lodash를 사용하면 다음을 사용하여 모든 배열을 단일 배열로 결합할 수 있습니다.
_.단조롭게 하다()
, 술어로 그룹화한 다음 각 그룹을 단일 개체에 매핑하고 병합합니다.참고: 귀하의
고객 ID
정수인 경우 항목은 숫자 값으로 정렬됩니다.원래 순서를 유지해야 하는 경우 단일 배열로 병합한 다음 술어의 결과를 키로 사용하여 항목을 Map으로 축소합니다. 동일한 키를 가진 각각의 새 항목을 맵의 기존 항목에 병합합니다. 다음을 사용하여 맵의 값을 다시 배열로 변환합니다.
Array.from()
: