似乎无法删除对象文字中的元素

Can't seem to delete element in object literal

我有一个 JSON 对象文字,我正试图从中删除一个元素(比方说苹果)。我已经尝试了很多东西,但我似乎无法让它工作。

var JSON = {
    "fruits": [{
        "name": "oranges",
        "quantity": "3"
    },{
        "name": "apples",
        "quantity": "2"
    },{
        "name": "bananas",
        "quantity": "3"
    }
]};

console.log(JSON);
delete JSON.fruits[1];
console.log(JSON);

调用上面的代码导致对象被删除,但看起来像是在第三个对象之前插入了键。看看 this fiddle。我不希望发生这种情况。

这就是 Fiddle 中发生的事情。但是在我的实时脚本中,它似乎用 null 一词替换了已删除的对象,这破坏了我的脚本。

我也尝试了 .splice() 的许多变体,但那似乎是针对数组,而不是对象文字。

有什么想法吗?

您可以使用 Array#splice 作为对象内部的数组。

delete 删除了对象,但是你得到了一个未定义的数组元素。

var object = { fruits: [{ name: "oranges", quantity: "3" }, { name: "apples", quantity: "2" }, { name: "bananas", quantity: "3" }] };

object.fruits.splice(1, 1);
console.log(object);
.as-console-wrapper { max-height: 100% !important; top: 0; }

JSON.fruits.splice(1, 1); // 移除苹果

知识:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/splice