Удалить пару ключ-значение из объекта JSON
У меня есть этот объект JSON ниже;
[
{
XXX: "2",
YYY: "3",
ZZZ: "4"
},
{
XXX: "5",
YYY: "6",
ZZZ: "7"
},
{
XXX: "1",
YYY: "2",
ZZZ: "3"
}
]
Я хочу удалить значение ключа YYY из объекта json таким образом, что новый объект json будет выглядеть следующим образом:
[
{
XXX: "2",
ZZZ: "4"
},
{
XXX: "5",
ZZZ: "7"
},
{
XXX: "1",
ZZZ: "3"
}
]
Я пробовал delete jsonObject['YYY']
, но это неверно. Как это можно сделать в javascript? Спасибо.
Ответы
Ответ 1
То, что вы называете своим "JSON Object", действительно представляет собой массив объектов JSON. Вы должны выполнять итерацию по каждому из них и удалять каждого члена отдельно:
for(var i = 0; i < jsonArr.length; i++) {
delete jsonArry[i]['YYY'];
}
Ответ 2
Итерируйте значения в массиве и удалите значение с помощью клавиши 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
}
Ответ 3
jsonObject - это массив, поэтому вам нужно ссылаться на элементы массива. Попробуйте delete jsonObject[0].YYY
Ответ 4
Поскольку ваш JSON
находится внутри массива, вам нужно получить доступ к каждому элементу массива и удалить его свойства "YYY" или использовать карту для создания уменьшенного объекта, например:
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
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 в начале и конце строки. Если у вас есть объект, созданный литералом объекта, используйте один из других ответов.