【发布时间】:2023-02-24 12:06:17
【问题描述】:
你好,
我有这段代码:
var array1 = {"id":"car", "name":"honda", "virtues":[{"price":99}, {"size" : 5}, {"condition" : 8}, {"features" : 3}]};
var array2 = {'userid' : '2', 'username' : 'john','prefs' : [{"price":1}, {"condition" : 0}]};
calceffect = function(array) {
array.map(x => {
for(var key in x) {
if(key!= 'size') {
array2.prefs.map(d =>
{
for(let k in d) {
if(k == key){
if(d[k] == 0) {
d = x;
} else {
console.log(key+' is already present');
}
} else {
array2.prefs.push(x);
}
}
}
);
}
}
});
}
calceffect(array1.virtues);
console.log(array2.prefs);
此函数应比较 2 个给定数组中包含的 2 个对象数组并搜索匹配项。如果第二个数组中不存在其中一个对象,则应按原样添加对象,如果存在对象但其值编号为 0,则将 0 更改为原始数组中的值,最后如果存在但值编号更大比 0 则什么都不做。
它把前两件事做对了,但第三件事却不是这样,因为尽管它已经存在了,但它还是添加了对象(在这种情况下是价格)。此外,它在末尾添加了许多[圆形对象对象]。为什么会这样?
谢谢。
【问题讨论】:
标签: javascript arrays javascript-objects