Подтвердить что ты не робот

Удалить пару ключ-значение из объекта 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? Спасибо.

4b9b3361

Ответ 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 в начале и конце строки. Если у вас есть объект, созданный литералом объекта, используйте один из других ответов.