让我们说这是我的对象数组:
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
。
有没有更好的方法来实现这一目标?
感谢。
答案 0 :(得分: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 :(得分: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);