【发布时间】:2017-08-15 07:28:49
【问题描述】:
我正在尝试迭代具有不同属性的对象数组。我在其中动态添加对象并想检查对象的属性是否存在于数组中,然后只覆盖该值,否则将其添加到数组中。
例如
var arr = [
{"value":"abc"},
{"type":"def"},
{"status":"ghi"},
{"value":"xyz"}
]
预期结果:
arr = [
{"value":"xyz"},
{"type":"def"},
{"status":"ghi"}
]
到目前为止,我正在尝试的方法不起作用。这是我的代码:
var arr = [
{"value":"abc"},
{"type":"def"},
{"status":"ghi"},
{"value":"abc"}
]
var obj={};
var key1 = "type", value="xyz";
obj[key1] = value;
var newarr = arr.filter(function(entry,i) {
if (!entry.hasOwnProperty(key1)) {
return true;
}
});
newarr.push(obj);
请注意,obj 将是动态的,所以当 key1 的属性没有改变时,我的代码第一次可以正常工作。一旦我将 key1 的值从“类型”更改为“状态”,它就会添加对象 2 次。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
type如何变异为data-type?还是两者不同? -
错字已更正!!
-
两个
value键和一个更新会发生什么? -
具有值的唯一属性应该只存在。
-
请更改示例。
标签: javascript jquery arrays filter