Es gibt eine Reihe von Methoden, mit denen dies leicht zu erreichen ist ( includes
, some
, find
, findIndex
)
const array = [1, 2, 3, 4, 5, 6, 7];
console.log(array.includes(3));
//includes() determines whether an array includes a certain value among its entries
console.log(array.some(x => x === 3));
//some() tests if at least one element in the array passes the test implemented by the provided function
console.log(array.find(x => x === 3) ? true : false);
//find() returns the value of the first element in the provided array that satisfies the provided testing function
console.log(array.findIndex(x => x === 3) > -1 ? true : false);
//findIndex() returns the index of the first element in the array that satisfies the provided testing function, else returning -1.
65 Stimmen
Gerade getestet: Ihr Weg ist tatsächlich der schnellste für alle Browser: jsperf.com/find-element-in-obj-vs-array/2 (abgesehen von der Vorabspeicherung von a.length in einer Variablen), während die Verwendung von indexOf (wie in $.inArray) viel langsamer ist
23 Stimmen
Viele haben geantwortet, dass die Array#indexOf ist Ihre beste Wahl hier. Aber wenn Sie etwas wollen, das korrekt in Boolean umgewandelt werden kann, verwenden Sie dies:
~[1,2,3].indexOf(4)
wird 0 zurückgeben, was als falsch ausgewertet wird, während~[1,2,3].indexOf(3)
wird -3 zurückgeben, was als wahr ausgewertet wird.13 Stimmen
~
ist nicht das, was Sie für die Konvertierung in einen Booleschen Wert verwenden wollen, dafür brauchen Sie!
. Aber in diesem Fall wollen Sie die Gleichheit mit -1 prüfen, damit die Funktion nicht endetreturn [1,2,3].indexOf(3) === -1;
~
nicht binär ist, wird jedes Bit des Wertes einzeln invertiert.1 Stimmen
IE9 unterstützt
indexOf()
gemäß w3schools.com/jsref/jsref_indexof_array.asp . Wenn ältere Browser besser Ansatz ist, zu definierenprototype
paraindexOf()
Funktion, wie sie in Array.indexOf im Internet Explorer19 Stimmen
@Iordvlad
[1,2,3].indexOf(4)
wird tatsächlich Rückgabe -1 . Wie @mcfedr feststellte,~
ist die bitweise-NOT-Operator siehe ES5 11.4.8. Da die binäre Darstellung von-1
nur aus 1en besteht, ist sein Komplement0
die als falsch ausgewertet wird. Das Komplement einer beliebigen anderen Zahl ist ungleich Null, also wahr. Also,~
funktioniert einwandfrei und wird häufig in Verbindung mitindexOf
.9 Stimmen
Der Titel ist irreführend. Wo ist die
[[1,2],[3,4]].includes([3,4])
?1 Stimmen
@brad, wenn ich zum ersten Mal lesen Sie Ihre Frage, ich konnte nicht verstehen, Ihre Idee, ein Objekt hier ist Javascript-Objekt oder ein primitiver Wert. Angenommen, ich habe ein Array:
const arr = [1, 2, 3, { foo: 1}];
. Undarr.includes(1) // true
sondernarr.includes({ foo: 1 }) //false
1 Stimmen
Wenn die Elemente in Ihrem Array Objekte sind dann schauen Sie sich este Antwort, die die
some
Funktion.0 Stimmen
let arr = ['apple','banana', 1, 2, 4] if (!arr.includes('banana') ) console.log('No') else console.log('Yes')
0 Stimmen
Console.log(['joe', 'jane', 'mary'].includes('jane'));