我有一个非常棘手的操作要做。所以就在这里。
我有一个名为“data1”的对象数组
[Object, Object, Object]
0:Object
id="00456145" //check this
name: "Rick"
upper:"0.67"
lower:"-0.34"
1:Object
id="00379321"
name:"Anjie"
upper:"0.46"
lower:"-0.56"
2:Object
id="00323113"
name:"dillan"
upper:"0.23"
lower:"-0.11"
我只对这些对象数组中的 id、上限值和下限值感兴趣。
这是名为“data2”的第二个对象数组
[Object, Object]
0:Object
id="0045614" //present here if we remove last element of '00456145'
cast="Rick"
Contact: "Yes"
upper:"0.11" //need to be updated to '0.67'
lower:"-0.11" //need to be updated to '-0.34'
1:Object
id="0032311" //present here if we remove last element of '00323113'
cast:"dillan"
Contact:"Maybe"
upper:"0.11"
lower:"-0.11"
所以,这就是我必须做的。我将首先检查“data1”。检查“data1”中存在的 id。例如对象 0 的 id="00456145"
我删除了其中的最后一个数字。所以它变成了 id="0045614"。 然后我比较该 id 是否存在于对象“data2”中。
如果存在,则“data1”中该对象 0 的上限值和下限值将传递到 id 所在的对象“data2”。在本例中,“data2”的对象 0 的 id=“0045614”。
因此上限和下限值将分别更新为 0.67 和 -0.34。
其他数组也类似。所以最终的输出应该类似于“data2”
[Object, Object]
0:Object
id="0045614"
cast="Rick"
Contact: "Yes"
upper:"0.67" //updated
lower:"-0.34" //updated
1:Object
id="0032311"
cast:"dillan"
Contact:"Maybe"
upper:"0.23" //updated
lower:"-0.11" //updated
最佳答案
在这种情况下,我喜欢 array#some,这样您就可以跳出循环,从而避免不必要的迭代:
var data1 = [{ id: "00456145", name: "Rick", upper: "0.67", lower: "-0.34" }, { id: "00379321", name: "Anjie", upper: "0.46", lower: "-0.56" }, { id: "00323113", name: "dillan", upper: "0.23", lower: "-0.11" }];
var data2 = [{ id: "0045614", cast: "Rick", Contact: "Yes", upper: "0.11", lower: "-0.11" }, { id: "0032311", cast: "dillan", Contact: "Maybe", upper: "0.11", lower: "-0.11" }];
data2 = data2.map(function(item) {
data1.some(function(a) {
if (item.id == a.id.slice(0, -1)) {
item.upper = a.upper;
item.lower = a.lower;
return true;
}
});
return item;
});
console.log(data2);
关于javascript - 使用不同的对象数据数组更新对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38134320/