фильтрация массива объектов перед использованием функции push в Typescript - PullRequest
0 голосов
/ 05 июля 2018

это упрощенная версия того, чего я пытаюсь достичь.

У меня есть массив объектов, и я отображаю новый массив. Теперь возможно, что новая загрузка данных в виде массива будет добавлена ​​к ранее созданному массиву объектов. Но прежде чем добавить новые объекты в выходной массив, мне нужно проверить, существуют ли те же данные. Я попытался использовать фильтр ниже, но, похоже, не работает. Есть идеи?

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 голосов
/ 05 июля 2018

Эта запись может вам помочь.

Выдержка из поста выше, но с небольшой модификацией: 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;
}
...