Невозможно найти, существует ли объект в массиве объектов для данного объекта в качестве входных данных. - PullRequest
0 голосов
/ 24 сентября 2018

Я разработчик младшего уровня, пытающийся решить сценарий, в котором я должен получить ошибку, если мы пытаемся добавить существующий объект в массив.

Ввод:

 {
  id: "0", 
  name: "sdsd"
}

Существующие массивы:

[{
  id: "0", 
  name: "sdsd"
 },

{
 id: "1", 
 name: "sds"
}, 
{
 id: "2",
 name: "sdf"
}]

Я ожидаю, что функция будет выглядеть примерно так:

findDuplicate (Array, Object) => вернет true, если есть, иначе false.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вы можете использовать фильтр массива и массив, как показано ниже:

var exist = [{
  id: "0", 
  name: "sdsd"
 },

{
 id: "1", 
 name: "sds"
}, 
{
 id: "2",
 name: "sdf"
}];
function findDuplicate(array, object){
    var result = array.filter(current=>{
        return Object.keys(current).every(key =>{
            if (object[key] === current[key]){
                return key;
            }
        });
    });
    //console.log(result);
    if (result.length == 0 )
        return false;
    return true;
}
console.log (findDuplicate(exist,{id:"0",name:"sdsdf"}));
console.log (findDuplicate(exist,{id:"0",name:"sdsd"}));
0 голосов
/ 24 сентября 2018

используйте метод some , так как он вернет true / false.Если некоторые элементы соответствуют true, возвращается, в противном случае возвращается false, если ничего не найдено (ваш обратный вызов должен возвращать значение true / falsey).

let items = [
  { id: "0", name: "sdsd" },
  { id: "1", name: "sds" },
  { id: "2", name: "sdf" }
]

// Test "name"
console.log(items.some(i => i.name == 'sdsd'))
console.log(items.some(i => i.name == 'dog'))

// Test "id"
console.log(items.some(i => i.id == '0'))
console.log(items.some(i => i.id == '100'))

// Test both "name" and "id"
console.log(items.some(i => i.name == 'sdsd' && i.id == '0'))
console.log(items.some(i => i.name == 'sdsd' && i.id == '100'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...