如何检查数组元素是否存在或不在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'); } }
我不得不在一个try
… catch
块中包装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'); }