Jeśli nie chcesz tworzyć nowej tablicy, jedynym wyborem jest splicing. Założę się, że podkreślenie też go używa (wewnętrznie, jeśli taka metoda istnieje).
Chociaż, ponieważ i tak tworzysz nową tablicę w tym przypadku, możesz po prostu użyć funkcji _.filternatywnej lub Array.prototype.filter(tak jak pokazano w drugim pytaniu). Wtedy wykonałbyś iterację po tablicy tylko raz, zamiast potencjalnie dwukrotnie, jak tutaj.
Jeśli chcesz zmodyfikować tablicę w miejscu , musisz użyć .splice. Jest to również pokazane w drugim pytaniu, a undescore nie wydaje się zapewniać żadnej użytecznej funkcji do tego.
var bob ={Name:"Bob",Age:35};var sam ={Name:"Sam",Age:19};var fred ={Name:"Fred",Age:50};var people =[bob, sam, fred]
_.without(people, sam);=>[{Name:"Bob",Age:35},{Name:"Fred",Age:50}];
Jeśli nie masz elementu do usunięcia, tylko jego właściwość, możesz użyć _.findWherea następnie _.without.
Uwaga: działa to tylko dlatego, że przekazujesz ten sam obiekt bez. Jeśli zamiast tego przejdziesz { Name: "Sam", Age: 19 }do bez zmiennej sam, a nie do zmiennej sam, to już nie działa. Fiddle
Zachowaj ostrożność, jeśli filtrujesz ciągi znaków i szukasz filtrów niewrażliwych na wielkość liter. _.without () rozróżnia wielkość liter. Możesz także użyć _.reject (), jak pokazano poniżej.
Inne odpowiedzi tworzą nową kopię tablicy, jeśli chcesz zmodyfikować tablicę w miejscu, możesz użyć:
arr.splice(_.findIndex(arr,{ id:3}),1);
Ale zakłada się, że element zawsze będzie znajdował się wewnątrz tablicy (ponieważ jeśli nie zostanie znaleziony, nadal usunie ostatni element). Dla bezpieczeństwa możesz użyć:
var index = _.findIndex(arr,{ id:3});if(index >-1){
arr.splice(index,1);}
pomiń działa objecti zwraca plik object. w związku z tym nie nadaje się do pracy z miejscami, w Arraysktórych możemy spodziewać się arrayzwrotu po usunięciu elementu.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.