Giriş
Açıklaması şöyle. Eğer hiçbir öğe testi geçemezse boş dizi döndürür.
Function Array.filter returns those elements of an array, which match the specified condition.
Eğer kendimiz kodlasaydık şöyle yapardık
function filter(array, condition) {result = []for (element of array)if condition(element)result.push(element)return result}
Java İle Farkı
JavaScript Array.filter() metodu Java'dan farklı çalışıyor. Java stream'lerinde tüm stream bir eleman için çalışıyor. Yani önce tek bir eleman için filter() daha sonra transform() daha sonra collect() çalışıyor. JavaScript ise elemanları teker teker işlemiyor. Array.filter() metodu önce tüm diziyi filtreler. Daha sonra sonucu stream'deki diğer çağrıya geçirir. Açıklaması şöyle
For instance, Javascript’s filter method outputs an array containing all the matching elements, so if you have a chain of operators, each operator in the chain operates on all elements and completes before the next begins.
filter metodu - value
Şöyle yaparız. İşlem sonunda arr dizisi 1,3,5 değerlerini içerir.
filter metodu - value + index
Örnek
Elimizde şöyle bir kod olsun.
var arr = [1, 2, 3, 4, 5];
var bar = [2, 4];
arr = arr.filter(function(v) {
return bar.indexOf(v) === -1;
});
Örnek
Elimizde şöyle bir kod olsun.
const array1 = [true, false, false, true];
const array2 = ['a', 'b', 'c', 'd'];
array2 dizinden array1 içinde aynı konumdaki değeri true olan nesneleri almak için şöyle yaparız.const array1 = [true, false, false, true];
const array2 = ['a', 'b', 'c', 'd'];
const res = array2.filter((_, i) => array1[i]);
console.log(res);
Hiç yorum yok:
Yorum Gönder