从JSON对象中删除键值对

use*_*486 24 javascript json

我在下面有这个JSON对象;

[
    {
        XXX: "2",
        YYY: "3",
        ZZZ: "4"
    },
    {
        XXX: "5",
        YYY: "6",
        ZZZ: "7"
    },
    {
        XXX: "1",
        YYY: "2",
        ZZZ: "3"
    }
]
Run Code Online (Sandbox Code Playgroud)

我想从json对象中删除YYY键值,以便新的json对象看起来像这样;

[
    {
        XXX: "2",       
        ZZZ: "4"
    },
    {
        XXX: "5",       
        ZZZ: "7"
    },
    {
        XXX: "1",       
        ZZZ: "3"
    }
]
Run Code Online (Sandbox Code Playgroud)

我试过delete jsonObject['YYY']但这不正确.怎么能在javascript中完成?谢谢.

Jus*_*ner 55

你称之为"JSON对象"的实际上是一个JSON对象数组.您必须遍历每个成员并单独删除每个成员:

for(var i = 0; i < jsonArr.length; i++) {
    delete jsonArry[i]['YYY'];
}
Run Code Online (Sandbox Code Playgroud)

  • 它删除了它的价值。但密钥仍然存在且值为空。我怎样才能删除它的密钥? (2认同)

Gaa*_*far 8

另一种避免改变原始数组并使用更现代功能的解决方案(对象休息运算符和解构)

const arr = [
    {
        XXX: "2",
        YYY: "3",
        ZZZ: "4"
    },
    {
        XXX: "5",
        YYY: "6",
        ZZZ: "7"
    },
    {
        XXX: "1",
        YYY: "2",
        ZZZ: "3"
    }
]

// destructure 'YYY' and return the other props only
const newArray = arr.map(({YYY, ...rest}) => rest)

console.log(newArray)
Run Code Online (Sandbox Code Playgroud)


nbr*_*oks 5

遍历数组中的值,并使用key删除值YYY

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
}
Run Code Online (Sandbox Code Playgroud)

  • 正确答案。但我只能在 StackOverflow 上将一个答案标记为正确答案。对不起。 (2认同)