/ / Змініть порядок масиву після видалення елемента - javascript, jquery, angularjs

Змінити порядок масиву після видалення елемента - javascript, jquery, angularjs

У моїй програмі я маю список елементів, які будуть переведені в масив під час перевірки цього, і будуть видалені з масиву, якщо не встановлено прапорець. Ось код

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

Проблема полягає в тому, що коли 5-й елемент масиву буде видалений, масив назавжди буде відсутній у цьому ключі, і тому, коли я відображаю його в шаблоні за допомогою angularjs він покаже порожній рядок у місці або відсутній 5-й елемент. Як я можу переставити масив після видалення елемента.

Відповіді:

0 для відповіді № 1
if (data.selectedInsertion === true) {
order.push(data);
}
else if (data.selectedInsertion === false) {
order.splice(order.index(data),1);
}

0 для відповіді № 2

Пам'ятайте, ніколи не використовуйте 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);
}

delete використовується для видалення властивості з об’єкта.


0 для відповіді № 3

Припускаючи, що всі значення у вашому масиві унікальні, ви можете зробити це так:

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, тим більше, що це, здається, логічне значення.