javascript - 使用 forEach() 删除对象元素

标签 javascript object foreach

我有这段代码可以从对象中删除元素:

const data = {
    "fname": "xyz",
    "lname": "abc",
    "age": 23,
    "level_year": 555,
    "qty_min": 1,
    "qty_med": 2
};

['fname', 'age'].forEach(val => {
    console.log('??', val)
    delete data[val];
});

console.log('result', data);

输出:

[object Object] {
  level_year: 555,
  lname: "abc",
  qty_med: 2,
  qty_min: 1
}

我实际上想通过使用相同的 key 删除所有元素,所以我这样做了:

const data = {
    "fname": "xyz",
    "lname": "abc",
    "age": 23,
    "level_year": 555,
    "qty_min": 1,
    "qty_med": 2
};

const obj1 = Object.assign({}, data);
const obj2 = Object.assign({}, data);

['fname', 'age'].forEach(val => {
    console.log('??', val)
    delete obj1[val];
    delete obj2[!val];
});

console.log('result1', obj1);
console.log('result2', obj2);

更新:我添加了 delete obj2[!val] 因为我期望 obj2 只保留 fnameage元素。显然我错了。 obj2 的预期输出:

[object Object] {
  "fname": "xyz",
  "age": 23,
} 

obj1 确实删除了元素,但 obj2 没有。如何在不使用多个 forEach() 并使用相同的对象键的情况下解决这个问题?最好不要图书馆。提前致谢。

最佳答案

看到预期的结果,而不是完全克隆数据两次然后删除属性,您可以只将属性添加到想要的对象:

const data = {
    "fname": "xyz",
    "lname": "abc",
    "age": 23,
    "level_year": 555,
    "qty_min": 1,
    "qty_med": 2
};

const obj1 ={},obj2 ={}, props = new Set(['fname', 'age']);
Object.keys(data).forEach(p=> (props.has(p) ? obj2 : obj1)[p] = data[p]);

console.log('result1', obj1);
console.log('result2', obj2);

编辑 关于行 (props.has(p) ? obj2 : obj1)[p] = data[p]:

第一部分 (props.has(p) ? obj2 : obj1) 检查 props- Set has名为 p 的属性。如果是,此代码段返回 obj2,否则返回 obj1

在生成的对象上,属性索引 [p] 用于设置值。例如,对于 fnameobj2 将从上面的部分返回,导致 obj2[p] = ...

最后一部分 data[p] 只是获取 data 对象的属性 p 的值。

关于javascript - 使用 forEach() 删除对象元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46617769/

相关文章:

php - 在 foreach 循环中使用 next

java - Android:如何将 ArrayList 的每个值绑定(bind)到一个变量?

javascript - Cordova 5.1.1 中的 FormData 相机操作不起作用

javascript - 如何在一行中console.log对象

javascript - 递归地迭代一个对象并将父级附加到每个子级

actionscript-3 - 无法扩展 Sound 对象原型(prototype)

javascript - JavaScript:获取引起回发的控件名称[客户端]

javascript - 谷歌地图 addListener 无法正常工作

javascript - 在 Firefox 中使用 eval 方法从字符串中获取类