javascript - How to change one property value in array with objects - Stack Overflow

I have const tab where I want to change property isActive from boolean to 'on' or 'off&#

I have const tab where I want to change property isActive from boolean to 'on' or 'off' depending on if it's true or false.

   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'}}
  ];

I tried to use .map() but I do something wrong. Can You please suggest where is the issue ?

const newTab = tab.map(x => x.original.isActive === false ? 'off' : x.original.isActive === true ? 'on' : x);

This is how newTab should look like after change:

  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'}}
     ];

With current code it returns changed isActive property only:

const newTab = ["off", "on", "off"]

thanks !

I have const tab where I want to change property isActive from boolean to 'on' or 'off' depending on if it's true or false.

   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'}}
  ];

I tried to use .map() but I do something wrong. Can You please suggest where is the issue ?

const newTab = tab.map(x => x.original.isActive === false ? 'off' : x.original.isActive === true ? 'on' : x);

This is how newTab should look like after change:

  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'}}
     ];

With current code it returns changed isActive property only:

const newTab = ["off", "on", "off"]

thanks !

Share Improve this question asked Mar 22, 2022 at 22:09 marcinb1986marcinb1986 9022 gold badges22 silver badges38 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 2

You can use spread syntax, and you can update variables in map method.

tab.map((e) => (
    {
        ...e,
        original: {
            ...e.original,
            isActive: e.original.isActive ? 'on' : 'off'
        }
    }
))

You want to return the entire object, not just on or off inside your map. You can condense this using ...(spread operator) and only modify isActive while returning everything else as is:

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.log(newTab)

you can use a mapping and return a JSON by copying the values.

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
            }
        }
    });

Output : Image Output

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745635465a4637366.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信