从JSON对象中删除键值对

时间:2014-07-16 01:39:19

标签: javascript json

我在下面有这个JSON对象;

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

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

[
    {
        XXX: "2",       
        ZZZ: "4"
    },
    {
        XXX: "5",       
        ZZZ: "7"
    },
    {
        XXX: "1",       
        ZZZ: "3"
    }
]

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

6 个答案:

答案 0 :(得分:50)

你所谓的'JSON对象'实际上是一个JSON对象数组。您必须遍历每个成员并单独删除每个成员:

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

答案 1 :(得分:4)

迭代数组中的值,并使用键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
}

答案 2 :(得分:2)

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

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)

答案 3 :(得分:1)

jsonObject是一个数组,因此您需要引用数组元素。试试delete jsonObject[0].YYY

答案 4 :(得分:1)

因为你的JSON在一个数组中,你需要访问数组中的每个元素并删除它们的属性&#34; YYY&#34;或使用map创建一个简化对象,如下所示:

var objs = [
    {
        XXX: "2",
        YYY: "3",
        ZZZ: "4"
    },
    {
        XXX: "5",
        YYY: "6",
        ZZZ: "7"
    },
    {
        XXX: "1",
        YYY: "2",
        ZZZ: "3"
    }
];

objs = objs.map(function(obj) {
    return { XXX: obj.XXX, ZZZ: obj.ZZZ };
});

使用map功能。 MDN: Array.prototype.map()

答案 5 :(得分:1)

JSON是文本,所以如果你真的有这样的文字:

var s = '[{XXX:"2",YYY:"3",ZZZ:"4"},{XXX:"5",YYY:"6",ZZZ:"7"},{XXX:"1",YYY:"2",ZZZ:"3"}]';

然后您可以使用字符串替换删除YYY,例如:

s.replace(/YYY[^,}]+,/g,''); // [{XXX:"2",ZZZ:"4"},{XXX:"5",ZZZ:"7"},{XXX:"1",ZZZ:"3"}]

您可能还需要在字符串的开头或结尾处考虑YYY。如果您有一个由对象文字创建的对象,则使用其他答案之一。