<分区>
鉴于以下
[{ a: 5, b: 2 }, { a: 2, b: 5 }].map(x => {
return {
...x,
b: undefined
}
})
我想以这样的方式结束
[{a:5},{a:2})
这可能吗? 我知道我可以做类似的事情
[{ a: 5, b: 2 }, { a: 2, b: 5 }].map(x => {
const obj = {
...x,
}
delete obj.b
return obj
})
或
[{ a: 5, b: 2 }, { a: 2, b: 5 }].map(x => {
return {
a: x.a
}
})
第一种方法导致值被设置为“未定义”。 第二种方法对于较大的数组来说似乎很浪费,因为创建了一个新变量对象,而且我的 typescript 也提示它,因为原始属性不是可选的。 如果您只想保留少量属性,第三种方法是可行的,但是一旦它只保留了几个属性,它就显得笨拙了。 对于我目前的情况,我可能会选择第二种方法,但我很好奇是否有一种方法可以更优雅地处理这个问题。
我知道我也可以这样做:
Object.keys(obj).forEach(key => obj[key] === undefined && delete obj[key])
但是看起来还是不够优雅。