首頁 > web前端 > js教程 > 如何將具有公共鍵的 JavaScript 物件合併到一個新數組中,其中值被組合在一起?

如何將具有公共鍵的 JavaScript 物件合併到一個新數組中,其中值被組合在一起?

DDD
發布: 2024-11-03 06:53:02
原創
798 人瀏覽過

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

使用 Common Key 合併 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板