>  기사  >  웹 프론트엔드  >  공통 키가 있는 JavaScript 개체를 값이 결합된 새 배열로 병합하려면 어떻게 해야 합니까?

공통 키가 있는 JavaScript 개체를 값이 결합된 새 배열로 병합하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-03 06:53:02759검색

How can I merge JavaScript objects with common keys into a new array where values are combined?

공통 키를 사용하여 JavaScript 개체 병합

JavaScript에서 개체 병합은 간단할 수 있습니다. 그러나 여러 개체가 공통 키를 공유하고 해당 값을 결합해야 하는 개체 배열을 처리할 때 프로세스가 더욱 복잡해집니다. 아래 예를 고려하십시오.

<code class="js">var array = [
    {
        name: "foo1",
        value: "val1"
    }, {
        name: "foo1",
        value: ["val2", "val3"]
    }, {
        name: "foo2",
        value: "val4"
    }
];</code>

목표는 동일한 이름 키와 연관된 모든 값이 함께 병합되는 형식으로 배열을 재구성하는 것입니다. 예상되는 출력은 다음과 같습니다.

<code class="js">var output = [
    {
        name: "foo1",
        value: ["val1", "val2", "val3"]
    }, {
        name: "foo2",
        value: ["val4"]
    }
];</code>

이러한 병합을 달성하기 위한 한 가지 효과적인 접근 방식은 입력 배열을 반복하고 동일한 이름 키를 가진 기존 개체를 필터링하는 것입니다. 기존 개체가 발견되면 해당 값이 업데이트되어 새 값을 포함합니다. 그렇지 않으면 새 객체가 생성되어 출력 배열에 추가됩니다.

다음은 구현 예입니다.

<code class="js">var output = [];

array.forEach(function(item) {
    var existing = output.filter(function(v, i) {
        return v.name == item.name;
    });
    if (existing.length) {
        var existingIndex = output.indexOf(existing[0]);
        output[existingIndex].value = output[existingIndex].value.concat(item.value);
    } else {
        if (typeof item.value == 'string')
            item.value = [item.value];
        output.push(item);
    }
});</code>

이 접근 방식을 사용하면 각 이름 키와 연결된 값이 출력 배열 내의 단일 개체. 입력 배열을 반복하고 기존 객체와 새 객체를 모두 처리함으로써 객체를 공통 키와 병합하기 위한 포괄적인 솔루션을 제공합니다.

위 내용은 공통 키가 있는 JavaScript 개체를 값이 결합된 새 배열로 병합하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.