簡體   English   中英

將對象屬性從一個數組映射到另一個數組

[英]Mapping object properties from one array to another

我有兩個數組(我稱它們為thing1thing2 ),它們的長度相同,但元素順序不同。

可以基於與每個元素關聯的目標名稱和源名稱將元素彼此匹配。

下面列出了每個示例的匹配元素:

thing1[0].target
Object {
  name: "Benthopelagics, large", parent: Object, imports: Array[7], TL: 3.717611213, B: 0.2…
}

thing1[0].source
Object {
  name: "Outside", parent: Object, imports: Array[4], TL: 5.149219037, B: 0…
}

thing2[216]
Object {source: "Benthopelagics, large", target: "Outside", value: 0.05800000596}

我想將“值”字段從thing2復制到thing1,但是作為JavaScript的新手,我一直無法弄清楚如何進行源名稱和目標名稱的匹配。

有人可以舉例說明所需的語法嗎?

遍歷thing2。 對於thing2的每次迭代,遍歷thing1並搜索匹配的對象屬性。

演示

for(var i = 0, j = thing2.length; i < j; i++) {
    for(var k = 0, l = thing1.length; k < l; k++) {
        if( thing1[k].source.name == thing2[i].source &&
            thing1[k].target.name == thing2[i].target) {
            thing1[k].value = thing2[i].value;
        }
    }
}

只是為了對比,這是一種更具功能性的編程類型的方法...

    thing1.forEach(function (d1, i1, a1) {
       var res = thing2.filter(function (d2, i2, a2) {
        return d1.source.name === d2.source && d1.target.name === d2.target
       });
       d1.value = res.length ? res[0].value : null;
    })

也許這種方法的優勢在於它更具聲明性,因為您甚至不必考慮管理索引。 您要做的就是聲明關聯規則,並且內置插件將為您管理索引詳細信息。 它確實具有完成失敗搜索案例的附加功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM