我正在编写一个 JS 代码,我想在其中从 JSON 数组中删除一个特定的键,我的代码如下。
var obj = [
{
XXX: "2",
YYY: "3",
ZZZ: "4"
},
{
XXX: "5",
YYY: "6",
ZZZ: "7"
},
{
XXX: "1",
YYY: "2",
ZZZ: "3"
}
];
for (var i = 0; i < obj.length; i++) {
delete obj[i].YYY
}
/*obj=obj.forEach(item =>{ return delete item.YYYY});*/
console.log(obj);
此代码工作正常,并按预期给我结果,但是,当我尝试使用 forEach
(注释行)运行它时,它显示我未定义。
我哪里错了?
最佳答案
只需删除代码中的 obj =
部分。 forEach
总是返回 undefined
。由于您正在修改数组中的对象并且想要复制 for
循环,因此 forEach
很好,只是不要重新分配(并且不需要 在回调中返回
):
obj.forEach(item => { delete item.YYY; });
现场示例:
var obj = [
{
XXX: "2",
YYY: "3",
ZZZ: "4"
},
{
XXX: "5",
YYY: "6",
ZZZ: "7"
},
{
XXX: "1",
YYY: "2",
ZZZ: "3"
}
];
obj.forEach(item => { delete item.YYY; });
console.log(obj);
(我删除了 forEach
代码中的错字,你有一个额外的 Y
。)
也就是说,for
循环没有任何问题,或者您可以使用 for-of
循环:
for (const item of obj
delete item.YYY;
}
现场示例:
var obj = [
{
XXX: "2",
YYY: "3",
ZZZ: "4"
},
{
XXX: "5",
YYY: "6",
ZZZ: "7"
},
{
XXX: "1",
YYY: "2",
ZZZ: "3"
}
];
for (const item of obj
delete item.YYY;
}
console.log(obj);
另一种选择是通过 map
,也许还有解构:
obj = obj.map(({YYY, ...rest}) => rest);
现场示例:
let obj = [
{
XXX: "2",
YYY: "3",
ZZZ: "4"
},
{
XXX: "5",
YYY: "6",
ZZZ: "7"
},
{
XXX: "1",
YYY: "2",
ZZZ: "3"
}
];
obj = obj.map(({YYY, ...rest}) => rest);
console.log(obj);
关于javascript - 无法从 ES6 中的 JSON 数组中删除 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68896604/