如何保留同一个对象但只替换一个属性?

问题描述 投票:1回答:2

让我们说这是我的对象数组:

let data = [{
              firstname: 'John',
              lastname: 'Doe'
             },
             {
              firstname: 'Jane',
              lastname: '- Doe'
             }]

现在,我想制作一个新的对象,但- Doe在哪里我需要删除这部分-并只留下Doe

我试过这个:

let pollyData = data.map(item => _.mapValues(item, val => val.lastname.split('- ').pop()))

但是,我得到了undefined

有没有更好的方法来实现这一目标?

谢谢。

javascript jquery arrays lodash
2个回答
3
投票

使用Array#map迭代。检查对象是否包含带破折号的lastname。如果是这样,请使用清理的姓氏创建一个新对象。如果没有返回原始对象。

注意:我用object spread代替lastname。如果构建堆栈不支持,则可以使用Object.assign({}, obj, { lastname: obj.lastname.replace(/^-\s+/, '') })

const data = [{
    firstname: 'John',
    lastname: 'Doe'
  },
  {
    firstname: 'Jane',
    lastname: '- Doe'
  }
];

const result = data.map((obj) => obj.lastname.includes('-') ? ({
  ...obj,
  lastname: obj.lastname.replace(/^-\s+/, '')
}) : obj);

console.log(result);

1
投票

你可以使用正则表达式和array#map

let data = [{ firstname: 'John', lastname: 'Doe' }, { firstname: 'Jane', lastname: '- Doe' }];
var result = data.map(({firstname, lastname}) => 
  ({firstname, lastname: lastname.replace(/^\s*\-\s*/g, '')})
);
console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.