arr数组里全是这种对象,怎么去重,只保留push进去的最新的
我写好了一部分这里
该怎么写?
如果 整个对象作为判断条件可以这样做
var arr = [{id: '1', name: 'abc'}, {id: '3', name: 'abc'}];
var obj = {id: '2', name: 'abc'};
if (!JSON.stringify(arr).includes(JSON.stringify(obj))) {
arr.push(obj);
}
console.log(JSON.stringify(arr));
// [{"id":"1","name":"abc"},{"id":"3","name":"abc"},{"id":"2","name":"abc"}]
根据id判断
var arr = [{match_id: '1', name: 'abc'}, {match_id: '3', name: 'abc'}];
var obj = {match_id: '2', name: 'abc'};
var map = arr.map(item=>({[item.match_id]: item}));
if(map[obj.match_id]){
map[obj.match_id] = obj;// 更新对象
arr = Object.values(map); // map 转 arr
} else {
arr.push(obj);
}
console.log(JSON.stringify(arr));
// [{"match_id":"1","name":"abc"},{"match_id":"3","name":"abc"},{"match_id":"2","name":"abc"}]
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
去重得先判重,这种结构复杂,但是值简单的,可以用 Lodash 的
isEquals()
来判断是否相同对象。