Answers:
用 typeof arrayName[index] === 'undefined'
即
if(typeof arrayName[index] === 'undefined') {
// does not exist
}
else {
// does exist
}
if(arrayName[index] === 'undefined')
用作快捷方式
if(arrayName[index] === undefined)
。
var myArray = ["Banana", "Orange", "Apple", "Mango"];
if (myArray.indexOf(searchTerm) === -1) {
console.log("element doesn't exist");
}
else {
console.log("element found");
}
if(myArray.indexOf(searchTerm) === -1)
如果我错了,请有人指正我,但AFAIK确实是这样:
hasOwnProperty
从“继承” 的原型方法Object
hasOwnProperty
可以检查数组索引处是否存在任何内容。因此,只要符合上述条件,您就可以:
const arrayHasIndex = (array, index) => Array.isArray(array) && array.hasOwnProperty(index);
用法:
arrayHasIndex([1,2,3,4],4);
输出: false
arrayHasIndex([1,2,3,4],2);
输出: true
如果数组元素也是简单对象或数组,则可以使用一些函数:
// 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;
}
});
some
是这里最现代的方式。它甚至还可以变成myArray.some(el => el.item === element.item && el.title === element.title)
var fruits = ["Banana", "Orange", "Apple", "Mango"];
if(fruits.indexOf("Banana") == -1){
console.log('item not exist')
} else {
console.log('item exist')
}
如果您使用 underscore.js,则库将隐藏这些类型的null和未定义检查。
因此您的代码将如下所示-
var currentData = new Array();
if (_.isEmpty(currentData)) return false;
Ti.API.info("is exists " + currentData[index]);
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")
myArray[1000000] = 'Pear'
功能,您的功能将永远存在。
我认为这种方式最简单。
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');
}
}
var demoArray = ['A','B','C','D'];
var ArrayIndexValue = 2;
if(ArrayIndexValue in demoArray){
//Array index exists
}else{
//Array Index does not Exists
}
如果您正在寻找这样的东西。
这是以下片段
var demoArray = ['A','B','C','D'];
var ArrayIndexValue = 2;
if(demoArray.includes(ArrayIndexValue)){
alert("value exists");
//Array index exists
}else{
alert("does not exist");
//Array Index does not Exists
}
Array.includes
可以检查值是否为数组,例如demoArray.indexOf(ArrayIndexValue) !== -1
。这个问题是关于检查索引是否存在于数组中,这是一个完全不同的问题
您可以简单地使用:
var tmp = ['a', 'b'];
index = 3 ;
if( tmp[index]){
console.log(tmp[index] + '\n');
}else{
console.log(' does not exist');
}
tmp = [0,0,0,0]
tmp [3]应该存在,该怎么办
这正是in
运营商的目的。像这样使用它:
if (index in currentData)
{
Ti.API.info(index + " exists: " + currentData[index]);
}
该接受的答案是错误的,它会给出假阴性如果在值index
是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!
}
&&
各个条件之间的连词()。