我有如下数组,我想首先检查数组中的记录是否已经存在,然后推送类似的记录。
arr1 = [{
'Name': 'Ken',
'Id' : 123,
'Units' : 100
}, {
'Name': 'Kris',
'Id': '223',
'Units' : 100
}, {
'Name': 'Ben',
'Id': '229',
'Units' : 100
},
{
'Name': 'Alex',
'Id': '222',
'Units' : 100
}]
现在假设我要添加类似的记录
{
'Name': 'Ken',
'Id' : 123,
'Units' : 50
}
此处仅更改了单位的值,有时它也可能保持不变。
我想要的是删除最初的类似记录(通过Id检查)并推送新记录。
所以我的最终数组应该像
arr1 = [{
'Name': 'Ken',
'Id' : 123,
'Units' : 100
}, {
'Name': 'Kris',
'Id': '223',
'Units' : 100
}, {
'Name': 'Ben',
'Id': '229',
'Units' : 100
},
{
'Name': 'Alex',
'Id': '222',
'Units' : 100
}]
答案 0 :(得分:2)
var newRecord = {
'Name': 'Ken',
'Id': 123,
'Units': 50
};
arr1 = arr.filter(function (el) {
return el.Id != newRecord.Id;
});
arr1.push(newRecord);
演示:
arr1 = [{
'Name': 'Ken',
'Id': 123,
'Units': 100
}, {
'Name': 'Kris',
'Id': '223',
'Units': 100
}, {
'Name': 'Ben',
'Id': '229',
'Units': 100
}, {
'Name': 'Alex',
'Id': '222',
'Units': 100
}]
var newRecord = {
'Name': 'Ken',
'Id': 123,
'Units': 50
};
arr1 = arr1.filter(function(el) {
return el.Id != newRecord.Id;
});
arr1.push(newRecord);
alert(JSON.stringify(arr1));
答案 1 :(得分:1)
根据相关属性过滤掉旧记录并添加新记录。
similarRecord = {
id = 123
...
}
_arr1 = arr1.filter(function(obj){
return obj.id != similarRecord.id
})
_arr1.push(similarRecord)