我在下面有这个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中完成?谢谢。
答案 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。如果您有一个由对象文字创建的对象,则使用其他答案之一。