включает в себя работу с массивом объектов?
Да - если вы используете тот же объект в качестве аргумента для 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
.