Katakanlah saya punya ini:
var blockedTile = new Array("118", "67", "190", "43", "135", "520");
Ada lebih banyak elemen array tetapi itu hanya beberapa untuk tujuan keterbacaan. Ngomong-ngomong, saya bisa melakukan loop "for" tapi itu akan melakukan 500 loop setiap kali Anda mengklik peta ... apakah ada cara lain untuk melihat apakah string tertentu ada dalam array?
javascript
uji
sumber
sumber
if(!!~blockedTile.indexOf('118))
metode ini akan selalu mengembalikan nilai true jika hasilnya> -1 dan false jika hasil === -1indexOf()
dapat juga diterapkan pada array literal, misif (-1 == [84, 116].indexOf(event.keyCode))
. Diuji pada Chrome 37.0.2062.122.indexOf(…) >= 0
. tidak ada bedanya dan saya lupa di mana saya mengambilnya sebagai kebiasaanSeperti disebutkan sebelumnya, jika browser Anda mendukung
indexOf()
, hebat! Jika tidak, Anda perlu pollyfil atau mengandalkan sabuk utilitas seperti lodash / garis bawah .Hanya ingin menambahkan tambahan ES2016 yang lebih baru ini (untuk menjaga pertanyaan ini diperbarui):
Array.prototype.includes ()
sumber
sumber
Gunakan Underscore.js
Ini lintas-browser yang sesuai dan dapat melakukan pencarian biner jika data Anda diurutkan.
_.Indeks
Contoh
sumber
Beberapa browser mendukung
Array.indexOf()
.Jika tidak, Anda dapat menambah
Array
objek melalui prototipe seperti ...Sumber .
sumber
Gunakan saja sesuai selera Anda:
sumber
sumber
Cara terbaik untuk melakukannya pada 2019 adalah dengan menggunakan
.includes()
Parameter pertama adalah apa yang Anda cari. Parameter kedua adalah posisi indeks dalam array ini untuk memulai pencarian.
Jika Anda perlu melakukan crossbrowsy di sini - ada banyak jawaban lama.
sumber
includes
solusi diduplikasi di Kutyel (2016), Сергей Савельев (2017) dan Krunal Limbad (2018) jawaban dengan contoh-contoh yang sama rinci dan referensi ...Sudah dijawab di atas tetapi ingin berbagi.
mendapat beberapa referensi Di Sini . mereka juga memiliki Polyfill untuk di atas.
sumber
Array.includes()
diperkenalkan di ES7 (ECMAScript 2017) dan tidak akan berfungsi dengan browser lama. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Bergantung pada versi JavaScript yang Anda miliki, Anda dapat menggunakan
indexOf
:Atau
some
:Tetapi, jika Anda melakukan semacam ini, periksa banyak, Anda akan lebih baik menggunakan Objek untuk menyimpan string Anda (atau mungkin objek serta Array tergantung pada apa yang Anda lakukan dengan data Anda).
sumber
Saya akan menggunakan struktur data yang berbeda, karena array tampaknya bukan solusi terbaik.
Alih-alih array, gunakan objek sebagai tabel-hash, seperti:
(diposting juga di jsbin )
Output konsol:
Itu solusi lurus ke depan. Jika Anda lebih menyukai pendekatan berorientasi objek, maka cari "js hashtable" di Google .
sumber
IMHO paling kompatibel dengan browser lama
Dengan memutar salinan Array ke string CSV, Anda dapat menguji string di browser yang lebih lama.
sumber
['Lemon Pie'].inArray('Lemon')
akan kembaliTrue
. Anda dapat membungkus jarum dengan,
untuk mengelilinginya atau menggunakan pencocokan regex untuk melakukan hal yang sama tetapi bergabung akan lebih disukai menggunakan sesuatu yang lebih tidak jelas daripada,
untuk alasan positif palsu yang sama (|
katakanlah). Itu tergantung pada datasetMengapa Anda tidak menggunakan Array.filter?
Cukup salin ke kode Anda, dan ini dia:
sumber
dalam contoh array, Sama dalam php (in_array)
sumber
sumber
includes
. Bagaimana jawaban ini memberikan nilai tambahan apa pun dibandingkan dengan mereka?Anda dapat mencoba kode di bawah ini. Periksa http://api.jquery.com/jquery.grep/
periksa arr.length jika lebih dari 0 berarti string ada atau tidak.
sumber
Saya pikir cara paling sederhana adalah:
sumber