@Levingstoun

Как изменить значение в объекте массива объектов и вернуть массив?

Есть массив
array = [
{id: 1, done: false, title: "fwe"}
{id: 2, done: false, title: "wfwf"}
{id: 3, done: false, title: "wfe"}
{id: 4, done: false, title: "афафф"}
{id: 5, done: false, title: "fafa"}
]


Как по обращению к функции найти элемент по id, менять только значение done на true/false(!done ?) и вернуть массив с измененным объектом и остальными элементами?
  • Вопрос задан
  • 4264 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Собрать новый массив:

const toggle = (arr, id) => arr.map(n => n.id === id ? { ...n, done: !n.done } : n);

Изменить существующий:

const toggle = (arr, id) => (arr.forEach(n => n.id === id && (n.done = !n.done)), arr);
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
const flip = (src_array, id) => {
  const result_array = JSON.parse(JSON.stringify(src_array); // клонируем массив объектов, чтобы не менять оригинал
  const obj = result_array.find(el => el.id == id);
  if (obj) obj.done = !obj.done;
  return result_array;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы