Проверка существования объекта в массиве в Javascript на основе определенного значения - PullRequest
0 голосов
/ 06 мая 2020

У меня есть массив объектов, и я хочу добавить новый объект, только если этот объект еще не существует в массиве. Объекты в массиве имеют 2 свойства, name и imageURL, и 2 объекта одинаковы, только если их имя такое же, и поэтому я sh сравниваю только имя, чтобы проверить, существует ли объект или нет Как реализовать это как состояние ??

Ответы [ 3 ]

1 голос
/ 06 мая 2020

Вы можете использовать Array.find

let newObj={ name:'X',imageURL:'..../'}
if(!array.find(x=> x.name == newObj.name))
   array.push(newObj)
1 голос
/ 06 мая 2020

Поскольку вы не упомянули используемые переменные. Я предполагаю, что массивом будет arr, а новым проверяемым объектом - person.

const arr = [{name: 'John', imageURL:'abc.com'},{name: 'Mike', imageURL:'xyz.com'}];
const person = {name: 'Jake', imageURL: 'hey.com'};
if (!arr.find(
      element => 
      element.name == person.name)
    ) {
       arr.push(person);
    };

Если имена не совпадают, объект person не будет помещен в массив.

0 голосов
/ 06 мая 2020

Вам необходимо проверить это с помощью find или аналогичных функций, например:


<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
<div class="snippet-code">
<pre class="snippet-code-js lang-js prettyprint-override"><code>const arr = [{ name: 1 }, { name: 2 }];

function append(arr, newEl) {
  if (!arr.find(el => el.name == newEl.name)) {
    arr.push(newEl);
  }
}

append(arr, { name: 2 }); // won't be added
console.log(arr);

append(arr, { name: 3 }); // will be added
console.log(arr);
...