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.0001 360912 {main}( ) .../index.php:0 2 0.0023 445080 require( '/home/prototurk.com/public_html/app/controller/category.php' ) .../index.php:101 3 0.0060 456704 require( '/home/prototurk.com/public_html/app/view/article.php' ) .../category.php:34 4 0.0113 536696 parseTemplate( ) .../article.php:112 5 0.0113 536808 preg_replace_callback ( ) .../template.php:126 6 0.0113 537328 bb_json( ) .../template.php:126 7 0.0114 566896 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.0001 360912 {main}( ) .../index.php:0 2 0.0023 445080 require( '/home/prototurk.com/public_html/app/controller/category.php' ) .../index.php:101 3 0.0060 456704 require( '/home/prototurk.com/public_html/app/view/article.php' ) .../category.php:34 4 0.0113 536696 parseTemplate( ) .../article.php:112 5 0.0113 536808 preg_replace_callback ( ) .../template.php:126 6 0.0113 537328 bb_json( ) .../template.php:126 7 0.0114 566896 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.0001 360912 {main}( ) .../index.php:0 2 0.0023 445080 require( '/home/prototurk.com/public_html/app/controller/category.php' ) .../index.php:101 3 0.0060 456704 require( '/home/prototurk.com/public_html/app/view/article.php' ) .../category.php:34 4 0.0113 536696 parseTemplate( ) .../article.php:112 5 0.0113 536808 preg_replace_callback ( ) .../template.php:126 6 0.0113 537328 bb_json( ) .../template.php:126 7 0.0114 566896 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