Lai to pārbaudītu, es tagad izmantoju šādu funkciju:
function inArray(needle,haystack)
{
var count=haystack.length;
for(var i=0;i<count;i++)
{
if(haystack[i]===needle){return true;}
}
return false;
}
Tā darbojas. Es meklēju, vai ir kāds labāks veids, kā to izdarīt.
Kods:
function isInArray(value, array) {
return array.indexOf(value) > -1;
}
Izpilde:
isInArray(1, [1,2,3]); // true
Atjauninājums (2017):
Mūsdienu pārlūkprogrammās, kas izmanto ECMAScript 2016 (ES7) standartu, var izmantot funkciju Array.prototipe.includes, kas ievērojami atvieglo pārbaudi, vai elements atrodas masīvā:
const array = [1, 2, 3];
const value = 1;
const isInArray = array.includes(value);
console.log(isInArray); // true
Vienkārši izmantojiet indexOf
:
haystack.indexOf(needle) >= 0
Ja vēlaties atbalstīt vecos Internet Explorers (<IE9), jums'nāksies iekļaut savu pašreizējo kodu, lai apietu.
Ja vien jūsu saraksts nav sakārtots, jums ir jāsalīdzina katra vērtība ar adatu. Tāpēc gan jūsu risinājumam, gan indexOf
būs jāveic vidēji n/2
salīdzinājumu. Tomēr, tā kā indexOf
ir iebūvēta metode, tā var izmantot papildu optimizācijas un praksē būs nedaudz ātrāka. Ņemiet vērā, ka, ja vien jūsu lietojumprogramma nemeklē sarakstos ārkārtīgi bieži (piemēram, 1000 reižu sekundē) vai saraksti ir milzīgi (piemēram, 100 000 ierakstu), ātruma atšķirībai nebūs nozīmes.