在Typescript中使用推入功能之前过滤对象数组

时间:2018-07-05 14:26:41

标签: arrays filter push arrayobject

这是我要实现的目标的简化版本。

我有一个对象数组,并且正在映射到一个新数组。现在,可能会将新的数组形式的数据加载添加到先前创建的对象数组中。但是在将新对象添加到现有数组之前,我需要检查是否已经存在相同的数据。我尝试在下面使用过滤器,但似乎不起作用。有想法吗?

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;

1 个答案:

答案 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;
}