/ / Zmień kolejność tablicy po usunięciu elementu - javascript, jquery, angularjs

Zmień kolejność tablic po usunięciu elementu - javascript, jquery, angularjs

W mojej aplikacji mam listę elementów, które zostaną wypchnięte do tablicy podczas sprawdzania tego i zostaną usunięte z tablicy po odznaczeniu. Oto kod

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

Problem polega na tym, że po usunięciu 5. elementu w tablicy, tablica będzie na zawsze brakować tego klucza, więc gdy wyświetlę go w szablonie za pomocą angularjs pokaże pusty wiersz w miejscu lub brakujący 5. element. Jak mogę ustawić tablicę po usunięciu elementu?

Odpowiedzi:

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

0 dla odpowiedzi nr 2

Pamiętaj, że nigdy nie używaj delete do usuwania elementów z tablicy. Ponieważ usunie element pozostawiając niezdefiniowany pod jego kluczem. W ten sposób możesz go podzielić lub odfiltrować.

Filtruj:

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

Połącz to

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

Usuń służy do usuwania właściwości z obiektu.


0 dla odpowiedzi № 3

Zakładając, że wszystkie wartości w tablicy są unikalne, możesz to zrobić w następujący sposób:

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

Array.splice usuwa elementy z tablicy. Sprawdź ten link, aby uzyskać więcej informacji: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

Gdyby data nie jest unikalny, usuwane jest tylko pierwsze wystąpienie w tablicy.

Możesz także pominąć jawne kontrole dla true i false, zwłaszcza że wydaje się być wartością logiczną.