JavaScript, bir dizinin belirli bir değeri içerip içermediğini belirlemek için birkaç verimli yol sunar. En uygun yaklaşım, ihtiyaçlarınıza bağlıdır—basit bir varlık kontrolü veya koşullar veya birden fazla eşleşme içeren daha karmaşık bir arama.
İçerik Tablosu
- Basit Değer Kontrolleri için
.includes()
Kullanımı - Koşullu Aramalar için
.find()
Kullanımı - Birden Fazla Eşleşme için
.filter()
Kullanımı - Alternatif Bir Yaklaşım Olarak
.indexOf()
Kullanımı for
Döngüsü Kullanımı (Az Önerilir)- Performans Hususları
Basit Değer Kontrolleri için .includes()
Kullanımı
.includes()
yöntemi, bir dizinin belirli bir değeri içerip içermediğini kontrol etmek için en basit ve genellikle en verimli çözümü sunar. Değer varsa true
, yoksa false
döndürür.
const numbers = [1, 2, 3, 4, 5];
const target = 3;
if (numbers.includes(target)) {
console.log(`Dizi ${target} değerini içeriyor`);
} else {
console.log(`Dizi ${target} değerini içermiyor`);
}
Koşullu Aramalar için .find()
Kullanımı
Tam değerinden ziyade belirli bir koşula göre bir öğe bulmanız gerektiğinde, .find()
yöntemi idealdir. Sağlanan test fonksiyonunu karşılayan ilk öğeyi veya eşleşme bulunmazsa undefined
döndürür.
const objects = [
{ id: 1, name: 'Apple' },
{ id: 2, name: 'Banana' },
{ id: 3, name: 'Orange' }
];
const foundObject = objects.find(obj => obj.name === 'Banana');
if (foundObject) {
console.log('Bulundu:', foundObject);
} else {
console.log('Nesne bulunamadı');
}
Birden Fazla Eşleşme için .filter()
Kullanımı
Belirli bir koşulu karşılayan tüm öğeleri almak için .filter()
yöntemini kullanın. Testi geçen tüm öğeleri içeren yeni bir dizi döndürür.
const numbers = [1, 2, 3, 2, 4, 2, 5];
const target = 2;
const filteredNumbers = numbers.filter(number => number === target);
if (filteredNumbers.length > 0) {
console.log(`${target} değerinden ${filteredNumbers.length} adet bulundu`);
} else {
console.log(`${target} değeri bulunamadı`);
}
Alternatif Bir Yaklaşım Olarak .indexOf()
Kullanımı
.indexOf()
yöntemi, bir değerin ilk oluşumunun indeksini döndürür. -1 değerinin döndürülmesi, değerin yok olduğu anlamına gelir. İşlevsel olsa da, .includes()
genellikle basit varlık kontrolleri için daha iyi okunabilirlik sunar.
const numbers = [1, 2, 3, 4, 5];
const target = 3;
const index = numbers.indexOf(target);
if (index !== -1) {
console.log(`${target} değeri ${index} indeksinde bulundu`);
} else {
console.log(`${target} değeri bulunamadı`);
}
for
Döngüsü Kullanımı (Az Önerilir)
for
döngüsüyle manuel yineleme mümkündür, ancak genellikle yerleşik yöntemlerden daha az verimli ve daha az okunabilirdir. Onlardan kaçınmak için ikna edici bir nedeniniz olmadıkça yerleşik yöntemleri kullanmanız tavsiye edilir.
const numbers = [1, 2, 3, 4, 5];
const target = 3;
let found = false;
for (let i = 0; i < numbers.length; i++) {
if (numbers[i] === target) {
found = true;
break;
}
}
if (found) {
console.log(`${target} bulundu`);
} else {
console.log(`${target} bulunamadı`);
}
Performans Hususları
Basit varlık kontrolleri için, .includes()
genellikle en verimli ve okunabilir olanıdır. .find()
ve .filter()
, koşullara dayalı aramalar veya tüm eşleşen öğeleri almak için en uygunudur. Yerleşik yöntemler performans için optimize edilmiş olduğundan, mutlak gerekli olmadıkça for
döngülerinden kaçının.