2017-01-02 3 views
-6
var y = [1,2,3]; 
(y.indexOf(1) > -1) ? console.log(true) : ''; 

Warum oben genannten Code nicht funktionieren? Ich dachte, es ist möglich, 1 in y zu überprüfen, was ein Array ist?indexOf Methode für ein Array in Javascript

+4

'y.indexOf (1)' kehrt '0' als '1' an dem 0-te Index in dem Array ist. Um zu überprüfen, ob sich ein Element im Array befindet, verwenden Sie 'array.indexOf (1)! == -1' oder' array.includes (1) 'für das neueste env. – Tushar

+1

Nun, da Sie den Code in Ihrer Frage "repariert" haben, was genau ist Ihre Frage?!? – Keiwan

+1

Was meinst du mit _don't arbeiten? _. Was wird erwartet? Bitte sehen Sie [mcve] und [edit] die Frage. – Tushar

Antwort

0

indexOf gibt die erste übereinstimmende Position des Werts im Array zurück.

1 erscheint in Position 0.

0 > 1 ist false.

Sie müssen testen, ob die Position größer als -1 ist, um zu sehen, ob sie überhaupt im Array erscheint.


Da diese Antwort zu schreiben, ist die Frage bearbeitet -1 zu verwenden. Der Code in der Frage funktioniert nun wie gewünscht.

+0

Umbenennung: '1' _ist_ in Position' 0' im Array 'y'. – Tushar

0

Es ist, weil in JS-Indizes an 0. Stelle beginnt.

So ist 1 in der 0. Platz ist 2 1. Platz und so weiter

3

indexOf Null basiert, wie alle Indizes von Arrays und Strings. Wenn ein Element nicht im Array ist, gibt es -1 zurück, andernfalls gibt es den Index des Elements zurück.

var y = [1, 2, 3]; 
 
console.log(y.indexOf(1) !== -1);

+0

@Tushar, zu was ...? ich denke, die op ist verwirrt über das konzept von "indexOf". –

Verwandte Themen