2012-10-28 5 views
116

ich mit Titan arbeitete,Wie überprüft man, ob ein Array-Element in Javascript existiert oder nicht?

mein Code wie folgt aussieht wie

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 bin vorbei Index Array Current,

Für nicht vorhandenes Element, ich bin nach wie vor nicht in der Lage, es zu erkennen unter Verwendung der oben Code

+1

Ihre Logik ist falsch. Sie benötigen Konjunktionen ('&&') zwischen den einzelnen Bedingungen. –

Antwort

200

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

dh

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

+1, nett. Sie können auch 'if (arrayName [index] === 'undefined')' als Abkürzung – AnchovyLegend

+44

@AnchovyLegend nicht verwenden, können Sie nicht! Aber Sie können 'if (arrayName [index] === undefined)' verwenden. –

+10

dies schlägt fehl, wenn das Element dort ist, aber sein Wert ist nicht definiert; Verwenden Sie stattdessen diese Antwort -> http: // stackoverflow.com/questions/1098040/überprüfen-wenn-ein-array-key-exists-in-javascript-objekt-oder-array – Matus

2

Ich hatte techfoobar Antwort in einem try zu wickeln .. catch Block, etwa so:

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

... das ist, wie es in Chrom gearbeitet, sowieso (sonst hielt der Code mit einem Fehler).

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

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

Leider funktioniert dieser in IE 7 und darunter nicht. – darksoulsong

+2

Dies ist meiner Meinung nach die beste Antwort, IE 7 ist mittlerweile nicht mehr gewartet, also ist es kein Problem. Obwohl ich vorschlagen werde, das Tripel gleich 'if (myArray.indexOf (searchTerm) === -1)' –

1

Wenn Sie underscore.js dann diese Art von null und undefined Prüfung verwenden, werden von der Bibliothek versteckt.

So Ihr Code wie folgt aussehen -

var currentData = new Array(); 

if (_.isEmpty(currentData)) return false; 

Ti.API.info("is exists " + currentData[index]); 

return true; 

Es ist nun viel besser lesbar aussieht.

+0

zu verwenden. Selbst wenn deine Antwort richtig ist, würde ich einfach zweimal darüber nachdenken. Ihr Code würde nur von einem leeren Wert abhängig sein. Machen Sie einfach eine einfache Wrapper-Funktion isset (v) {return (typeof v! == 'undefined'); } – Heroselohim

2

Wenn Elemente des Arrays sind auch einfache Objekte oder Arrays können Sie some Funktion:

// search object 
var element = { item:'book', title:'javasrcipt'}; 

[{ item:'handbook', title:'c++'}, { item:'book', title:'javasrcipt'}].some(function(el){ 
    if(el.item === element.item && el.title === element.title){ 
     return true; 
    } 
}); 

[['handbook', 'c++'], ['book', 'javasrcipt']].some(function(el){ 
    if(el[0] == element.item && el[1] == element.title){ 
     return true; 
    } 
}); 
2

Sie können einfach verwenden:

var tmp = ['a', 'b']; 
index = 3 ; 
if(tmp[index]){ 
    console.log(tmp[index] + '\n'); 
}else{ 
    console.log(' does not exist'); 
} 
2

das Array Betrachten ein:

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') 
+3

"Var a" ist in Ihrem Fall kein Array-Objekt, sondern ein reguläres Objekt. Sollte sein var a = [...]. Ich denke, das ist was der Autor benötigt. – tomazahlin

+0

So überprüfen Sie das Vorhandensein eines Schlüssels in einem Objekt, nicht das Vorhandensein eines Index in einem Array. – Beejamin

3

Dieser Weg ist meiner Meinung nach am einfachsten.

var nameList = new Array('item1','item2','item3','item4'); 

// Using for loop to loop through each item to check if item exist. 

for (var i = 0; i < nameList.length; i++) { 
if (nameList[i] === 'item1') 
{ 
    alert('Value exist'); 
}else{ 
    alert('Value doesn't exist'); 
} 

Und vielleicht eine andere Möglichkeit, es zu tun ist.

nameList.forEach(function(ItemList) 
{ 
    if(ItemList.name == 'item1') 
     { 
      alert('Item Exist'); 
     } 
} 
2

einfache Art und Weise Artikel zu überprüfen, existieren oder nicht

Array.prototype.contains = function(obj) { 
    var i = this.length; 
    while (i--) 
     if (this[i] == obj) 
     return true; 
    return false; 
} 

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

myArray.contains("Apple")