Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.02.2014, 09:39
Интересующийся
Отправить личное сообщение для preproger Посмотреть профиль Найти все сообщения от preproger
 
Регистрация: 17.02.2014
Сообщений: 10

Удаление элемента массива без сдвига индексов
Здравствуйте. Имеется массив со строками.
Содержит, допустим, 50 элементов.

Требуется, чтобы при удалении 25ого элемента он полностью отсутствовал, т.е. в массиве были 1...22,23,24,26,27....50 и не было 25.

Как это сделать? splice не так работает.

Следует ли для этого использовать объект с ключами в виде цифр?
Ответить с цитированием
  #2 (permalink)  
Старый 18.02.2014, 09:57
Новичок на форуме
Отправить личное сообщение для mishgun131 Посмотреть профиль Найти все сообщения от mishgun131
 
Регистрация: 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 исчезла.
Ответить с цитированием
  #3 (permalink)  
Старый 18.02.2014, 09:57
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

delete array[25];


Удалит ключ и значение.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 18.02.2014, 10:18
Интересующийся
Отправить личное сообщение для preproger Посмотреть профиль Найти все сообщения от preproger
 
Регистрация: 17.02.2014
Сообщений: 10

@danik.js, аа!! спасибо большое! то что нужно!! карму пока не могу поднять) кого-то другого нужно плюсануть, чтоб мог опять тебя))

@mishgun131, потому что по arr[5] будет существовать элемент, хотя его значение и будет 7
Ответить с цитированием
  #5 (permalink)  
Старый 18.02.2014, 11:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

вариант - просто как демострация возможности удаления
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)]);
Ответить с цитированием
  #6 (permalink)  
Старый 06.03.2015, 16:48
Кандидат Javascript-наук
Отправить личное сообщение для FanAizu Посмотреть профиль Найти все сообщения от FanAizu
 
Регистрация: 08.03.2011
Сообщений: 148

Сообщение от danik.js
delete array[25];


Удалит ключ и значение.
Удалит только значение, а ключ останется. Эта же проблема возникла, splice сдвигает индексы при удалении, а delete удаляет только значение элемента, но не его индекс, то есть при delete myVar[1], переменная myVar[1] будет по-прежнему существовать, просто значение будет undefined. Как удалить и индекс и значение без сдвига индексов, простым способом?..
Ответить с цитированием
  #7 (permalink)  
Старый 06.03.2015, 17:50
Кандидат Javascript-наук
Отправить личное сообщение для FanAizu Посмотреть профиль Найти все сообщения от FanAizu
 
Регистрация: 08.03.2011
Сообщений: 148

Хотя сори, delete и вправду удаляет элемент вместе с индексом, видимо, у меня баг какой-то в коде был просто
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление элемента массива и его длина Esigns Общие вопросы Javascript 3 17.07.2013 19:23
Удаление элемента массива по его названию Dorian_bs Общие вопросы Javascript 13 04.07.2013 21:28
Удаление элемента из массива saharin Общие вопросы Javascript 3 11.12.2012 15:22
функция удаления элемента массива Кирюха =) jQuery 5 06.09.2012 01:17
Удаление отдельного элемента с масива Suharik Общие вопросы Javascript 8 06.04.2010 17:11