#javascript #ecmascript-6
#javascript #ecmascript-6
Вопрос:
У меня есть два массива.
let arr1 = [{id: 1, favorite: false}, {id: 2, favorite: false}, {id: 3, favorite: false}];
let arr2 = [1, 3];
Если идентификатор существует в arr2
, я хочу изменить favorite
на true
(этого конкретного объекта)
Например. в приведенном выше случае финал arr1
будет выглядеть так
[{id: 1, favorite: true}, {id: 2, favorite: false}, {id: 3, favorite: true}];
Ответ №1:
Вы можете использовать .map
для перебора arr1
и .includes
проверки, находится ли элемент id
в arr2
:
const arr1 = [
{id: 1, favorite: false},
{id: 2, favorite: false},
{id: 3, favorite: false}
];
const arr2 = [1, 3];
const res = arr1.map(e =>
({...e, favorite: arr2.includes(e.id)})
);
console.log(res);
Комментарии:
1. Спасибо, именно то, что я искал!
2. @rohanharikr добро пожаловать. Пожалуйста, отметьте ответ как решение, чтобы закрыть вопрос
Ответ №2:
Вы также можете использовать some
такой метод, как:
const newArr = arr1.map(item => { return { ...item, favorite: arr2.some(elem => elem === item.id) } })
Ответ №3:
Вы также можете использовать forEach
и includes
.
let arr1 = [{id: 1, favorite: false}, {id: 2, favorite: false}, {id: 3, favorite: false}];
let arr2 = [1, 3];
arr1.forEach(x => x.favorite = arr2.includes(x.id))
console.log(arr1);