Javascript every() Metodu
ES5
Dizideki tüm öğelerin belirtilen koşula uygun olup olmadığını test eder. Testi geçemeyen ilk öğede metod geriye false döndürür ve işlemi durdurur. Eğer tüm öğeler testi geçerse geriye true döner.
Yapısı (Syntax)array.every(function(currentValue, index, arr), thisValue)
Parametreler
-
currentValue
( ! ) Notice: Undefined property: stdClass::$type in /home/prototurk.com/public_html/app/view/article-js.php on line 64 Call Stack # Time Memory Function Location 1 0.0002 364376 {main}( ) .../index.php:0 2 0.0026 448440 require( '/home/prototurk.com/public_html/app/controller/category.php' ) .../index.php:101 3 0.0048 460064 require( '/home/prototurk.com/public_html/app/view/article.php' ) .../category.php:34 4 0.0100 540056 parseTemplate( ) .../article.php:112 5 0.0100 540168 preg_replace_callback ( ) .../template.php:126 6 0.0100 540688 bb_json( ) .../template.php:126 7 0.0101 570256 require( '/home/prototurk.com/public_html/app/view/article-js.php' ) .../template.php:220 Test edilen elemanın değeri -
index
( ! ) Notice: Undefined property: stdClass::$type in /home/prototurk.com/public_html/app/view/article-js.php on line 64 Call Stack # Time Memory Function Location 1 0.0002 364376 {main}( ) .../index.php:0 2 0.0026 448440 require( '/home/prototurk.com/public_html/app/controller/category.php' ) .../index.php:101 3 0.0048 460064 require( '/home/prototurk.com/public_html/app/view/article.php' ) .../category.php:34 4 0.0100 540056 parseTemplate( ) .../article.php:112 5 0.0100 540168 preg_replace_callback ( ) .../template.php:126 6 0.0100 540688 bb_json( ) .../template.php:126 7 0.0101 570256 require( '/home/prototurk.com/public_html/app/view/article-js.php' ) .../template.php:220 Test edilen elemanın indis değeri -
arr
( ! ) Notice: Undefined property: stdClass::$type in /home/prototurk.com/public_html/app/view/article-js.php on line 64 Call Stack # Time Memory Function Location 1 0.0002 364376 {main}( ) .../index.php:0 2 0.0026 448440 require( '/home/prototurk.com/public_html/app/controller/category.php' ) .../index.php:101 3 0.0048 460064 require( '/home/prototurk.com/public_html/app/view/article.php' ) .../category.php:34 4 0.0100 540056 parseTemplate( ) .../article.php:112 5 0.0100 540168 preg_replace_callback ( ) .../template.php:126 6 0.0100 540688 bb_json( ) .../template.php:126 7 0.0101 570256 require( '/home/prototurk.com/public_html/app/view/article-js.php' ) .../template.php:220 Test edilen elemanın ait olduğu dizi objesi
Dönen Değer
Dizideki tüm öğeler testi geçerse true, aksi halde false döner.
Örnekler
Tüm öğelerin değerini test etme
Aşağıdaki kod, dizideki tüm öğelerin 10'dan büyük olup olmadığını test eder.
function isBigEnough(el) {
return el >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); // false
[12, 54, 18, 130, 44].every(isBigEnough); // true
Arrow fonksiyonlarla kullanımı
Arrow fonksiyonları aynı işlemin daha kısa yazılmasını sağlar.
[12, 5, 8, 130, 44].every(x => x >= 10); // false
[12, 54, 18, 130, 44].every(x => x >= 10); // true
Objeleri test etmek
Metod parametre olarak sadece dizi değil bir değerde alabilir. Aşağıdaki kod, bir değer ve dizilerin birleşimini gösterir.
const users = [
{
name: "Tayfun Erbilen",
age: 27
},
{
name: "Mehmet Seven",
age: 27
},
{
name: "Batuhan Aydın",
age: 27
}
];
console.log(users.every(el => el.age === 27));
Diğer parametrelerine bir örnek
Aşağıdaki kod, 2. ve 3. parametrelerinin kullanımını gösteren bir örnektir.
const users = [
{
name: "Tayfun Erbilen",
age: 27
},
{
name: "Mehmet Seven",
age: 27
},
{
name: "Batuhan Aydın",
age: 28
}
];
function isSameAge(el, index, arr) {
if (index === 0 || index === arr.length - 1)
return true;
else
return (el.age === arr[index - 1].age);
}
console.log(users.every(isSameAge));
// Çıktı: true
// çünkü ilk ve son öğe ise doğrudan true döndürdük, bu yüzden son öğeyi
// kontrol etmedi ve bütün öğelerin yaşının eşit olduğunu varsaydı.
Öğelerin değiştirilmesi
Eğer test sırasında diziyi güncellerseniz, yeni bir öğe eklerseniz ya da bir öğeyi silerseniz nasıl işleyeceğine dair bir örnek.
// Öğeleri güncellemek
let arr = [1, 2, 3, 4];
let result = arr.every( (elem, index, arr) => {
arr[index + 2] -= 2; // her test ettiğinde 2 sonraki öğesinin indisini 2 azaltıyoruz
console.log(`[${arr}][${index}] -> ${elem}`)
return elem < 2
});
console.log(result);
// Çıktı
// "[1,2,1,4][0] -> 1"
// "[1,2,1,2][1] -> 2"
// false
// Yeni öğe eklemek
arr = [1, 2, 3];
result = arr.every( (elem, index, arr) => {
arr.push('new')
console.log(`[${arr}][${index}] -> ${elem}`)
return elem < 4
});
console.log(result)
// Çıktı
// "[1,2,3,new][0] -> 1"
// "[1,2,3,new,new][1] -> 2"
// "[1,2,3,new,new,new][2] -> 3"
// true
// Öğeleri silmek
arr = [1, 2, 3, 4];
result = arr.every( (elem, index, arr) => {
arr.pop()
console.log(`[${arr}][${index}] -> ${elem}`)
return elem >= 1 && elem < 3;
});
console.log(result);
// Çıktı
// "[1,2,3][0] -> 1"
// "[1,2][1] -> 2"
// true