Проблема добавления элементов в массив

#javascript

#javascript

Вопрос:

 for(i=0;i<rowData.length;i  ){
    if(rowData[i].title == 'Gender'){
        AddMinusGenderImage.remove(AddMinusGenderImage);
        rowData.splice(i,1);
        tableview.data = rowData;
        break;
    }
}
  

После того, как я удаляю данные и добавляю новые данные в массив, они добавляются в array [1] вместо array[0]. почему??

Добавление части массива

Я добавляю массив в элемент одним нажатием кнопки, вот так. При каждом нажатии кнопки строка добавляется в массив.

 rowData.push(row);
  

строка — это объект, теперь у него есть заголовок свойства, который я проверяю и удаляю строку. Когда я добавляю еще одну строку, она не занимает пустое пространство, вместо этого создается новый индекс массива.

Комментарии:

1. Куда вы добавляете данные в массив?

2. Ну, данные всегда добавляются в конец массива, никогда в начало. Если удаленный элемент был первым, то предыдущий второй элемент становится первым, а новый — вторым. Что вы на самом деле хотите сделать?

3. В моем случае, когда я удаляю первый камень, второй не становится первым, также, когда я добавляю второй, он тоже не становится первым

4. @JohnCooper: Серьезно? Тогда ваш код либо отличается от опубликованного вами, либо вы используете странный браузер. Если вы удаляете элемент из массива с помощью splice , массив переиндексируется: jsfiddle.net/fkling/3raxN

Ответ №1:

Функция «.splice()» удалит элемент из любого места вашего массива, но «.push()» всегда добавляет элементы в конец массива.

Таким образом:

 var r = ["hello", "out", "there"];
  

Если мы выделим среднее слово («out»):

 r.splice(1, 1);
  

Тогда массив будет ["hello", "there"] . Однако, если мы «.push()» что-то еще:

 r.push("up");
  

Тогда массив будет ["hello", "there", "up"] .