[英]Mapping object properties from one array to another
我有兩個數組(我稱它們為thing1
和thing2
),它們的長度相同,但元素順序不同。
可以基於與每個元素關聯的目標名稱和源名稱將元素彼此匹配。
下面列出了每個示例的匹配元素:
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.