javascript - 无法从 ES6 中的 JSON 数组中删除 key

标签 javascript

我正在编写一个 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/

相关文章:

javascript - 常用函数的 jquery 原型(prototype)

javascript - typeof foo 和 typeof(foo)/delete bar 和 delete(bar) 之间有什么区别,为什么我们需要两者?

javascript - 加速数字越接近其最大值

javascript - 如何在鼠标悬停时在 d3.js 中创建工具提示?

javascript - Angular 2/Nodejs 部署到 heroku 错误 heroku-postbuild : `ng build`

javascript - 如何打开弹出窗口并使其从工具栏闪烁?

javascript - 如何验证是否已使用实习测试框架调用了方法?

javascript - JavaScript 数组中的字符串

Javascript if typeof ='undefined' in try/catch space

javascript - 将文本从 IFRAME 复制到父页面上的 INPUT 字段