Poszukuję dobrego algorytmu, aby uzyskać wszystkie elementy w jednej tablicy, które nie są elementami w innej tablicy. Wziąwszy pod uwagę te tablice:Algorytm JavaScript do znajdowania elementów w tablicy, które nie są w innej tablicy
var x = ["a","b","c","t"];
var y = ["d","a","t","e","g"];
chcę skończyć z tej tablicy:
var z = ["d","e","g"];
używam jQuery, więc mogę wykorzystać $.each()
i $.inArray()
. Oto rozwiązanie, które wymyśliłem, ale wygląda na to, że powinien istnieć lepszy sposób.
// goal is to get rid of values in y if they exist in x
var x = ["a","b","c","t"];
var y = ["d","a","t","e","g"];
var z = [];
$.each(y, function(idx, value){
if ($.inArray(value,x) == -1) {
z.push(value);
}
});
alert(z); // should be ["d","e","g"]
Oto code in action. Jakieś pomysły?
hmm, moja sytuacja ma obiekty w moich tablicach, a nie tylko proste ciągi. Wstawiam ciągi w moim pytaniu, aby uprościć rzeczy. Nie jestem pewien, czy Twoje rozwiązanie zadziała. – Tauren
Nazwa grep może wprowadzać w błąd. To tak naprawdę nie ma nic wspólnego ze stringami. Po prostu bierze predykat. Inne języki wywołują ten sam filtr. Zrobiłem [demo] (http://jsfiddle.net/xBDz3/6/). –
Wow, po szybkim teście wygląda na to, że działa. Polecenie grep wprowadza w błąd, ponieważ zakładam, że działa ono na tekście takim jak polecenie unix. Zrobię więcej testów. – Tauren