В JS для массива, состоящего из JSON-объектов, например:

var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];

Если мы хотим удалить второй JSON-объект, что делать? На самом деле метод точно такой же, как при работе с массивом.

 

Сначала я попробовал использовать операторdelete, но при проверке длины массива обнаружил, что этот метод удаляет элемент не полностью; вместо этого он удаляет его значение, но всё ещё сохраняет место.

var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];
test.length   //输出为 3
delete test[1];
test.length   //输出仍为 3

Изучив оператор delete, мы знаем, что он лишь устанавливает это значение в undefined и не влияет на длину массива, то есть превращает его в разрежённый массив (раздел 7.5 книги «JavaScript: The Definitive Guide»).

 

Зная это, возможно, вы подумаете о том, чтобы сдвинуть каждый элемент после точки удаления на одну позицию вперёд, чтобы полностью удалить этот элемент, но среди методов JS можно найти более простой подход:метод splice()

var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];
test.length   //输出为 3
test.splice(1, 1);
test.length   //输出为 2

После удаления test.length становится равным 2, что как раз и является нужным нам результатом.

Исходный URL: https://blog.csdn.net/WI_232995/article/details/77776433