这是我要实现的目标的简化版本。
我有一个对象数组,并且正在映射到一个新数组。现在,可能会将新的数组形式的数据加载添加到先前创建的对象数组中。但是在将新对象添加到现有数组之前,我需要检查是否已经存在相同的数据。我尝试在下面使用过滤器,但似乎不起作用。有想法吗?
let arr:IOption[] = [
{key:1,text:"key1"},
{key:2,text:"key2"},
{key:3,text:"key3"},
];
let arr2:IOption[] = [
{key:1,text:"key1"},
{key:2,text:"key2"},
{key:3,text:"key3"},
{key:4,text:"key4"},
];
let newArray:IOption[] = [];
arr.map((item)=>{
newArray.push(item);
});
arr2.map((newItem)=>{
newArray = newArray.filter(s => s.key !== newItem.key);
//newArray = newArray.filter((s) => {return s.key !== 1});
newArray.push(newItem);
});
let output = "";
newArray.forEach((item)=>{
output+=item.key + " ";
})
document.querySelector("#app").innerHTML = output;
答案 0 :(得分:0)
此post可能会对您有所帮助。
从上面的帖子中提取,但做了一些小的修改:list[i].key === obj.key
function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i].key === obj.key) {
return true;
}
}
return false;
}