включает в себя работы с массивом объектов? - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь использовать include, чтобы увидеть, находится ли объект внутри массива следующим образом:

arr=[{name:'Dan',id:2}]

, и я хочу проверить вот так:

arr.includes({name:'Dan',id:2})

и этовозвращает false, есть ли способ сделать это?

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Не так.Вместо этого используйте some:

arr.some(obj => obj.id === 2)

Который проверяет, есть ли объект с id равным 2.

Если вы проверяете как id, так и name тогда:

arr.some(obj => obj.id === 2 && obj.name === "Dan")
0 голосов
/ 12 декабря 2018

Массивы имеют функцию includes(), но для вашего случая вы должны использовать some():

arr.some(e => e.id === 2 && e.name === "Dan")
arr.some(e => e.name === "Dan")
0 голосов
/ 12 декабря 2018

включает в себя работу с массивом объектов?

Да - если вы используете тот же объект в качестве аргумента для includes, который находится в массиве:

const obj = {name: "Dan", id: 2};
const arr = [{name: "T.J.", id: 42}, obj, {name: "Joe", id: 3}];
console.log(arr.includes(obj));                  // true
console.log(arr.includes({name: "Dan", id: 2})); // false

includes использует проверку ===, и o1 === o2 имеет значение всегда, только когда o1 и o2 относятся к одинаковым объект.В вашем примере вместо этого вы используете два разных, но эквивалентных объекта.

В вашем случае вы, вероятно, захотите some, что позволит вам выполнить обратный вызов, чтобы определить, соответствует ли запись в массиве условию:

if (arr.some(e => e.id === 2)) {

Пример:

const obj = {name: "Dan", id: 2};
const arr = [{name: "T.J.", id: 42}, obj, {name: "Joe", id: 3}];
console.log(arr.some(obj => obj.id === 2));      // true

Существуют различные способы прокрутить это, в зависимости от того, какой вы хотите чек (о чем подробно говорится в ответах на этот вопрос ),но это просто означает корректировку содержимого передаваемой функции some.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...