2016-06-23 2 views
0

В моем приложении у меня есть список элементов, которые будут перенесены в массив при проверке этого и будут удалены из массива при снятии флажка. Вот кодИзмените порядок массива после удаления элемента

  if (data.selectedInsertion === true) { 
       order.push(data); 
      } 
      else if (data.selectedInsertion === false) { 
       angular.forEach(order, function (value,key) { 
        if (value == data) { 
         delete order[key]; 
        } 
       }) 
      } 

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

+3

Вы должны нарезать его. http://www.w3schools.com/jsref/jsref_splice.asp –

+0

сплайсируйте массив – abhishekkannojia

+0

, вы можете вводить в заблуждение объекты и массивы здесь. – CodeToad

ответ

0
if (data.selectedInsertion === true) { 
    order.push(data); 
} 
else if (data.selectedInsertion === false) { 
    order.splice(order.index(data),1); 
} 
+1

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! –

+0

должен быть order.indexOf (data) – Nivesh

0

Предполагая, что все значения в массиве являются уникальными, вы можете сделать это следующим образом:

if(data.selectedInsertion) { 
    order.push(data); 
} else { 
    order.splice(order.indexOf(data),1) 
} 

Array.splice удаляет элементы из массива. Проверить эту ссылку для получения дополнительной информации: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

Если data не является уникальным, только первое событие в массиве удаляется.

Кроме того, вы можете оставить явные проверки для true и false, тем более, что это похоже на булевское значение.

0

Помните, что никогда не используйте delete для удаления элементов из массива. Поскольку это приведет к удалению элемента, остающегося неопределенным под его ключом. Таким образом, вы можете связать его или отфильтровать.

фильтр это:

if (data.selectedInsertion === true) { 
    order.push(data); 
} 
else if (data.selectedInsertion === false) { 
    order = order.filter(function(v){ 
    return v !== data; 
    }); 
} 

сращивание это

if (data.selectedInsertion === true) { 
    order.push(data); 
} 
else if (data.selectedInsertion === false) { 
    order.splice(order.indexOf(data),1); 
} 

удалить используется для удаления свойства из объекта.

Смежные вопросы