如何检查数组元素是否存在或不在JavaScript?

我正在与titanium,

我的代码看起来像,

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; } 

我通过索引数组currentData,

对于不存在的元素,我仍然无法使用上面的代码检测到它

使用typeof arrayName[index] === 'undefined'

 if(typeof arrayName[index] === 'undefined') { // does not exist } else { // does exist } 
 var myArray = ["Banana", "Orange", "Apple", "Mango"]; if (myArray.indexOf(searchTerm) === -1) { console.log("element doesn't exist"); } else { console.log("element found"); } 

考虑数组a:

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

如果你想检查'name1'是否存在于a中,只需在下面进行testing:

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

这在我看来是最简单的。

 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'); } 

也许另一种方法是。

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

我不得不在一个trycatch块中包装techfoobar的答案,就像这样:

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

这就是它在Chrome中的工作方式(否则,代码会停止并显示错误)。

如果数组的元素也是简单的对象或数组,你可以使用一些函数:

 // 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; } }); 

简单的方法来检查项目是否存在

 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") 

如果您使用underscore.js,那么这些types的null和undefined check将被库隐藏。

所以你的代码看起来像这样 –

 var currentData = new Array(); if (_.isEmpty(currentData)) return false; Ti.API.info("is exists " + currentData[index]); return true; 

现在看起来更可读。

你可以简单地使用这个:

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