delete действует как нереальная ситуация, просто удаляет элемент, но длина массива остается неизменной:
пример из узла терминала:
> var arr = ["a","b","c","d"];
> delete arr[2]
true
> arr
[ 'a', 'b', , 'd', 'e' ]
Вот функция для удаления элемента массива по индексу, используя slice () , она принимает arr в качестве первого аргумента, а индекс члена, который вы хотите удалить, как второй аргумент. Как видите, он фактически удаляет член массива и уменьшает длину массива на 1
function(arr,arrIndex){
return arr.slice(0,arrIndex).concat(arr.slice(arrIndex + 1));
}
Функция, выполняемая выше, состоит в том, чтобы взять все элементы до индекса и всех членов после индекса, объединить их вместе и вернуть результат.
Вот пример использования вышеупомянутой функции в качестве модуля узла, где будет полезен терминал:
> var arr = ["a","b","c","d"]
> arr
[ 'a', 'b', 'c', 'd' ]
> arr.length
4
> var arrayRemoveIndex = require("./lib/array_remove_index");
> var newArray = arrayRemoveIndex(arr,arr.indexOf('c'))
> newArray
[ 'a', 'b', 'd' ] // c ya later
> newArray.length
3
обратите внимание, что это не будет работать с одним массивом с дуплексами в нем, потому что indexOf ("c") просто получит первое вхождение, и только склеит и удалит первый найденный символ "c".