Dapatkah seseorang memberitahu saya bagaimana untuk mendeteksi jika "specialword"
muncul dalam array? Contoh:
categories: [
"specialword"
"word1"
"word2"
]
Anda benar-benar don't perlu jQuery untuk ini.
var myarr = ["I", "like", "turtles"];
var arraycontainsturtles = (myarr.indexOf("turtles") > -1);
Petunjuk: indexOf mengembalikan nomor, yang mewakili posisi di mana ditentukan searchvalue terjadi untuk pertama kalinya, atau -1 jika tidak pernah terjadi
atau
function arrayContains(needle, arrhaystack)
{
return (arrhaystack.indexOf(needle) > -1);
}
It's dicatat bahwa array.indexOf(..)
adalah tidak didukung di IE < 9, tetapi jQuery's indexOf(...)
fungsi ini akan bekerja bahkan untuk versi yang lebih tua.
jQuery menawarkan $.inArray
:
Perhatikan bahwa inArray mengembalikan indeks dari elemen yang ditemukan, sehingga 0
menunjukkan elemen pertama dalam array. -1
menunjukkan elemen tidak ditemukan.
var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];
var foundPresent = $.inArray('specialword', categoriesPresent) > -1;
var foundNotPresent = $.inArray('specialword', categoriesNotPresent) > -1;
console.log(foundPresent, foundNotPresent); // true false
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Edit 3,5 tahun kemudian
$.inArray
lebih efektif pembungkus untuk Array.prototipe.indexOf
di browser yang mendukung (hampir semua dari mereka hari ini), sambil memberikan shim pada orang-orang yang don't. Hal ini pada dasarnya sama dengan menambahkan shim untuk Array.prototipe
, yang lebih idiomatik/JSish cara melakukan sesuatu. MDN menyediakan kode tersebut. Hari-hari ini saya akan mengambil pilihan ini, daripada menggunakan jQuery wrapper.
var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];
var foundPresent = categoriesPresent.indexOf('specialword') > -1;
var foundNotPresent = categoriesNotPresent.indexOf('specialword') > -1;
console.log(foundPresent, foundNotPresent); // true false
Edit lagi 3 tahun kemudian
Wah, 6,5 tahun?!
Pilihan terbaik untuk ini di modern Javascript Array.prototipe.termasuk
:
var found = categories.includes('specialword');
Tidak ada perbandingan dan tidak membingungkan -1
hasil. Itu tidak apa yang kita inginkan: mengembalikan true
atau false
. Untuk browser lama itu's polyfillable menggunakan kode di MDN.
var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];
var foundPresent = categoriesPresent.includes('specialword');
var foundNotPresent = categoriesNotPresent.includes('specialword');
console.log(foundPresent, foundNotPresent); // true false
Di sini anda pergi:
$.inArray('specialword', arr)
Fungsi ini mengembalikan sebuah integer positif (indeks array dari nilai yang diberikan), atau -1
jika nilai yang diberikan tidak ditemukan dalam array.
Demo Live:
Anda mungkin ingin menggunakan ini seperti:
if ( $.inArray('specialword', arr) > -1 ) {
// the value is in the array
}
Saya don't seperti $.inArray(..)
, it's jenis jelek, jQuery-ish solusi yang paling waras orang-orang yang tidak't mentolerir. Berikut ini's cuplikan yang menambahkan sederhana berisi(str)
metode untuk gudang senjata anda:
$.fn.contains = function (target) {
var result = null;
$(this).each(function (index, item) {
if (item === target) {
result = item;
}
});
return result ? result : false;
}
Demikian pula, anda bisa membungkus $.inArray
di perpanjangan:
$.fn.contains = function (target) {
return ($.inArray(target, this) > -1);
}