Wie überprüfe ich, ob ein Array-Index in Javascript vorhanden ist oder nicht?

Lesezeit: 4 Minuten

Benutzer-Avatar
Pradeep

Ich arbeite mit Titanium, mein Code sieht so aus:

var currentData = new Array();
if(currentData[index]!==""||currentData[index]!==null||currentData[index]!=='null')
{
    Ti.API.info("is exists  " + currentData[index]);
    return true;
}
else
{   
    return false;
}

Ich übergebe einen Index an die currentData Reihe. Ich kann immer noch keinen nicht vorhandenen Index mit dem obigen Code erkennen.

  • Deine Logik ist falsch. Du brauchst Konjunktionen (&&) zwischen den einzelnen Bedingungen.

    – JK

    28. Oktober 2012 um 9:59 Uhr


  • Probieren Sie diese Überprüfungen aus: stackoverflow.com/a/71808205/984471

    – Manohar Reddy Poreddy

    9. April um 12:48 Uhr

Benutzer-Avatar
techfoobar

Verwenden typeof arrayName[index] === 'undefined'

dh

if(typeof arrayName[index] === 'undefined') {
    // does not exist
}
else {
    // does exist
}

  • +1, schön. Sie können auch verwenden if(arrayName[index] === 'undefined') als Abkürzung

    – Sardellenlegende

    8. Oktober 2013 um 0:08 Uhr


  • @AnchovyLegend nein, kannst du nicht! Aber Sie können verwenden if(arrayName[index] === undefined).

    – Dennis V

    29. November 2013 um 15:01 Uhr

  • dies schlägt fehl, wenn das Element vorhanden ist, aber sein Wert nicht definiert ist; Verwenden Sie stattdessen diese Antwort -> stackoverflow.com/questions/1098040/…

    – Matus

    17. Mai 2014 um 21:25 Uhr


  • Wie @Matus sagte, gibt es hier weitere Erklärungen, die Sie beachten sollten.

    – S. Thiongane

    8. August 2014 um 8:47 Uhr

  • für if(arrayName[index] === undefiniert) können Sie eine noch kürzere verwenden, nämlich if(!arrayName[index])

    – Park JongBum

    17. Juli 2018 um 14:09 Uhr

Benutzer-Avatar
jawanth

var myArray = ["Banana", "Orange", "Apple", "Mango"];

if (myArray.indexOf(searchTerm) === -1) {
  console.log("element doesn't exist");
}
else {
  console.log("element found");
}

  • Leider funktioniert dieser nicht in IE 7 und niedriger.

    – dunkles Seelenlied

    7. Oktober 2014 um 15:21 Uhr

  • Dies ist meiner Meinung nach die beste Antwort, da IE 7 inzwischen nicht mehr gewartet wird, ist dies kein Problem. Obwohl ich vorschlagen werde, die dreifache Gleichheit zu verwenden if(myArray.indexOf(searchTerm) === -1)

    – Mauro Gava

    1. September 2016 um 2:49 Uhr

  • Das OP wollte sehen, ob das gegeben ist Index Nummer existiert. Dies prüft, ob eine gegeben ist Wert existiert.

    – jonathan.s

    7. März 2019 um 17:53 Uhr

Heutzutage würde ich Ecmascript nutzen und es so verwenden

return myArr?.[index]

  • @dsi Sie können es jederzeit in der Konsole überprüfen. Jedenfalls sollte es. Die Idee besteht genau darin, Sie in diesem Fall vor Fehlern zu bewahren.

    – Saulus

    21. Juli 2021 um 13:07 Uhr

  • let date = string.match(/Datum: (.*)/)?.[1] > SyntaxError: Unerwartetes Token ‘.’

    – www.assayag.org

    25. April um 20:19 Uhr


Bitte korrigiert mich jemand, wenn ich falsch liege, aber so viel ich weiss Folgendes gilt:

  1. Arrays sind wirklich nur Objekte unter der Haube von JS
  2. Somit haben sie die Prototyp-Methode hasOwnProperty “geerbt von Object
  3. bei meinen Tests, hasOwnProperty kann prüfen, ob an einem Array-Index etwas vorhanden ist.

Also, solange das oben Gesagte zutrifft, können Sie einfach:

const arrayHasIndex = (array, index) => Array.isArray(array) && array.hasOwnProperty(index);

Verwendungszweck:

arrayHasIndex([1,2,3,4],4); Ausgänge: false

arrayHasIndex([1,2,3,4],2); Ausgänge: true

Genau das ist die in Betreiber ist für. Verwenden Sie es wie folgt:

if (index in currentData) 
{ 
    Ti.API.info(index + " exists: " + currentData[index]);
}

Die akzeptierte Antwort ist falsch, es wird falsch negativ ausgegeben, wenn der Wert at index ist undefined:

const currentData = ['a', undefined], index = 1;

if (index in currentData) {
  console.info('exists');
}
// ...vs...
if (typeof currentData[index] !== 'undefined') {
  console.info('exists');
} else {
  console.info('does not exist'); // incorrect!
}

Benutzer-Avatar
Schweizer Herr

Ich musste die Antwort von techfoobar in a einpacken try..catch blockieren, etwa so:

try {
  if(typeof arrayName[index] == 'undefined') {
    // does not exist
  }
  else {
  // does exist
  }
} 
catch (error){ /* ignore */ }

… so hat es jedenfalls in Chrome funktioniert (ansonsten wurde der Code mit einem Fehler abgebrochen).

Benutzer-Avatar
Amir

Betrachten Sie das Array a:

var a ={'name1':1, 'name2':2}

Wenn Sie überprüfen möchten, ob ‘name1’ in a existiert, testen Sie es einfach mit in:

if('name1' in a){
console.log('name1 exists in a')
}else
console.log('name1 is not in a')

  • “var a” ist in Ihrem Fall kein Array-Objekt, sondern ein reguläres Objekt. Sollte var a = sein [ … ]. Ich denke, das ist es, was der Autor brauchte.

    – tomazahlin

    16. Dezember 2015 um 13:10 Uhr


  • So überprüfen Sie das Vorhandensein eines Schlüssels in einem Objekt, nicht das Vorhandensein eines Indexes in einem Array.

    – Ben Hull

    2. Februar 2017 um 0:58 Uhr

  • Das in Operator scheint auch mit Arrays zu funktionieren. Wie 2 in [5, 6, 7, 8, 9, 10] stimmt, aber 6 in [5, 6, 7, 8, 9, 10] ist falsch. Ändern Sie einfach Ihre Antwort in ein Array, um relevant zu sein.

    – Hockendes Kätzchen

    19. November 2020 um 22:39 Uhr

1310700cookie-checkWie überprüfe ich, ob ein Array-Index in Javascript vorhanden ist oder nicht?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy