У меня есть вкладка const, где я хочу изменить свойство isActive с логического на «включено» или «выключено» в зависимости от того, истинно оно или ложно.
const tab = [
{id:'0',original:{lineId:'4', isActive:false, length: '3'}},
{id:'1',original:{lineId:'5', isActive:true, length: '4'}},
{id:'2',original:{lineId:'6', isActive:false, length: '7'}}
];
Я пытался использовать .map(), но что-то делаю не так. Не могли бы вы подсказать, где проблема?
const newTab = tab.map(x => x.original.isActive === false ? 'off' : x.original.isActive === true ? 'on' : x);
Вот как должен выглядеть newTab после изменения:
const newTab =
[
{id:'0',original:{lineId:'4', isActive:'off', length: '3'}},
{id:'1',original:{lineId:'5', isActive:'on', length: '4'}},
{id:'2',original:{lineId:'6', isActive:'off', length: '7'}}
];
С текущим кодом он возвращает только измененное свойство isActive:
const newTab = ["off", "on", "off"]
Спасибо !
вы можете использовать сопоставление и вернуть JSON, скопировав значения.
const tab = [
{ id: '0', original: { lineId: '4', isActive: false, length: '3' } },
{ id: '1', original: { lineId: '5', isActive: true, length: '4' } },
{ id: '2', original: { lineId: '6', isActive: false, length: '7' } }
];
const tab2 = tab.map(e => {
return {
id: e.id,
original: {
lineId: e.original.lineId,
isActive: e.original.isActive ? 'on' : 'off',
length: e.original.length
}
}
});
Выход : Вывод изображения
Вы хотите вернуть весь объект, а не только on
или off
внутри вашей карты. Вы можете сжать это, используя ...
(оператор расширения) и изменить только isActive
, возвращая все остальное как есть:
const tab = [{
id: '0',
original: {
lineId: '4',
isActive: false,
length: '3'
}
},
{
id: '1',
original: {
lineId: '5',
isActive: true,
length: '4'
}
},
{
id: '2',
original: {
lineId: '6',
isActive: false,
length: '7'
}
}
];
const newTab = tab.map(item => ({
...item,
original: {
...item.original,
isActive: item.original.isActive ? 'on' : 'off',
}
}));
console.info(newTab)
Вы можете использовать синтаксис распространения и обновлять переменные в методе карты.
tab.map((e) => (
{
...e,
original: {
...e.original,
isActive: e.original.isActive ? 'on' : 'off'
}
}
))
спасибо @TusharShahi, я обновляю.
Не размещайте код только ответы. Пожалуйста, попробуйте сообщить OP, где они ошибаются и как ваш код исправляет это.