Aks*_*ari 2 javascript node.js
假设我有一个包含许多键的对象列表,我只想保留其中的某些键。这就是我的做法。
SO 上其他好的解决方案的问题是,如果键中不存在键以保持它仍然添加一个键,值未定义的值。
let data = [{
'a': 1,
'b': 2,
'c': 3
},
{
'a': 1,
'c': 3,
'd': 4
}]
const keys_to_keep = ['a', 'b']
data = data.map((obj) => {
Object.keys(obj).forEach(function(key) {
if(!keys_to_keep.includes(key))
delete obj[key]
});
return obj;
})
Run Code Online (Sandbox Code Playgroud)
输出 :
[ { a: 1, b: 2 }, { a: 1} ]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来完成这项工作。任何帮助表示赞赏。
一些改进。
您正在使用.map()which 创建一个新数组,但是您只是将其分配给旧变量。所以,你显然根本不需要创建一个新数组,你可以迭代你拥有的数组并修改它。
将您想要保留的属性放在一个Set而不是一个Array潜在更快的查找中。
for/of.forEach()由于更好的流控制选项(中断、继续、返回等)和编译器优化的更多机会,循环通常比循环更受青睐。
let kv = [{
'a': 1,
'b': 2,
'c': 3
},
{
'a': 1,
'b': 2,
'c': 3,
'd': 4
}]
const l = new Set(['a', 'b']);
for (let obj of kv) {
for (let prop of Object.keys(obj)) {
if (!l.has(prop)) {
delete obj[prop];
}
}
}
console.log(kv);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |