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 № 1if (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ą.