18.02.2014, 09:39
|
Интересующийся
|
|
Регистрация: 17.02.2014
Сообщений: 10
|
|
Удаление элемента массива без сдвига индексов
Здравствуйте. Имеется массив со строками.
Содержит, допустим, 50 элементов.
Требуется, чтобы при удалении 25ого элемента он полностью отсутствовал, т.е. в массиве были 1...22,23,24,26,27....50 и не было 25.
Как это сделать? splice не так работает.
Следует ли для этого использовать объект с ключами в виде цифр?
|
|
18.02.2014, 09:57
|
Новичок на форуме
|
|
Регистрация: 15.05.2013
Сообщений: 2
|
|
Привет,
Почему splice не так работает?
var arr = [1,2,3,4,5,6,7,8,9];
arr.splice(5,1);
console.log(arr); // [1,2,3,4,5,7,8,9] - 6 исчезла.
|
|
18.02.2014, 09:57
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
delete array[25];
Удалит ключ и значение.
__________________
В личку только с интересными предложениями
|
|
18.02.2014, 10:18
|
Интересующийся
|
|
Регистрация: 17.02.2014
Сообщений: 10
|
|
@danik.js, аа!! спасибо большое! то что нужно!! карму пока не могу поднять) кого-то другого нужно плюсануть, чтоб мог опять тебя))
@mishgun131, потому что по arr[5] будет существовать элемент, хотя его значение и будет 7
|
|
18.02.2014, 11:50
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
вариант - просто как демострация возможности удаления
var arr = [1,2,3,4,5,6,7,8,9];
delete arr[0];
alert(arr[0])
alert([arr.length, Object.keys(arr)]);
var arr = [1,2,3,4,5,6,7,8,9];
function del(arr, indx)
{ var ghost = Array();
for (var i=0; i<arr.length; i++) {i != indx && (ghost[i]=arr[i])};
return ghost;
}
arr = del(arr, 0)
alert(arr[0])
alert([arr.length, Object.keys(arr)]);
|
|
06.03.2015, 16:48
|
Кандидат Javascript-наук
|
|
Регистрация: 08.03.2011
Сообщений: 148
|
|
Сообщение от danik.js
|
delete array[25];
Удалит ключ и значение.
|
Удалит только значение, а ключ останется. Эта же проблема возникла, splice сдвигает индексы при удалении, а delete удаляет только значение элемента, но не его индекс, то есть при delete myVar[1], переменная myVar[1] будет по-прежнему существовать, просто значение будет undefined. Как удалить и индекс и значение без сдвига индексов, простым способом?..
|
|
06.03.2015, 17:50
|
Кандидат Javascript-наук
|
|
Регистрация: 08.03.2011
Сообщений: 148
|
|
Хотя сори, delete и вправду удаляет элемент вместе с индексом, видимо, у меня баг какой-то в коде был просто
|
|
|
|