【发布时间】:2018-03-18 23:17:10
【问题描述】:
我有这段代码可以从对象中删除元素:
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 只保留fname 和age 元素。显然我错了。 obj2 的预期输出:
[object Object] {
"fname": "xyz",
"age": 23,
}
obj1 确实删除了该元素,但 obj2 没有。如何在不使用多个 forEach() 和使用相同的对象键的情况下解决此问题?最好没有图书馆。提前致谢。
【问题讨论】:
-
obj2[!val]----- >!....... ??????????? -
你认为
!val会是什么,比如val == 'fname'是什么时候? (提示:这是错误的) -
@sg552 :
obj2[!val]==>obj2[false](因为非空字符串是真实值)==>undefined
标签: javascript object foreach