Задать вопрос
@beefront17

Как изменять все свойства объектов, js?

Как лучше менять свойства объектов?
Есть массив объектов и нужно менять свойства объектов в зависимости какой объект выбран и это свойство для других объектов также надо менять.
Ниже пример

const arr = [
  {
    label: '1',
    enabled: true,
  },
  {
    label: '2',
    enabled: false,
  },
  {
    label: '3',
    enabled: false,
  },
];

// item который выбран 

const obj = {
    label: '2',
    enabled: true,
}

// результат должен быть такой 

const result =  [
  {
    label: '1',
    enabled: false,
  },
  {
    label: '2',
    enabled: true,
  },
  {
    label: '3',
    enabled: false,
  },
];


Нужно написать как можно короче.
Можно использовать Lodash.
  • Вопрос задан
  • 304 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
const arr = [
  {
    label: '1',
    enabled: true,
  },
  {
    label: '2',
    enabled: false,
  },
  {
    label: '3',
    enabled: false,
  },
];

const obj = {
    label: '2',
    enabled: true,
};

const result = arr.map(item => {
    item.enabled = item.label === obj.label;
    return item;
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@McBernar
arr.map( (item) => item.enabled = false);
Ответ написан
@Interface
Если выбираете по индексу то как-то так:

function select(selectedIndex) {
    return arr.map((item, index) => ({
        ...item,
        enabled: index === selectedIndex
    }));
}

// использование:
select(2);
select(0)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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