I am working with Titanium, my code looks like this:
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;
}
I am passing an index to the array currentData
. I am still not able to detect a non-existing element using above code.
This question is related to
javascript
titanium
titanium-mobile
Someone please correct me if i'm wrong, but AFAIK the following is true:
hasOwnProperty
"inherited" from Object
hasOwnProperty
can check if anything exists at an array index.So, as long as the above is true, you can simply:
const arrayHasIndex = (array, index) => Array.isArray(array) && array.hasOwnProperty(index);
usage:
arrayHasIndex([1,2,3,4],4);
outputs: false
arrayHasIndex([1,2,3,4],2);
outputs: true
Simple way to check item exist or not
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")
var demoArray = ['A','B','C','D'];
var ArrayIndexValue = 2;
if(ArrayIndexValue in demoArray){
//Array index exists
}else{
//Array Index does not Exists
}
This also works fine, testing by type against undefined
.
if (currentData[index] === undefined){return}
Test:
const fruits = ["Banana", "Orange", "Apple", "Mango"];_x000D_
_x000D_
if (fruits["Raspberry"] === undefined){_x000D_
console.log("No Raspberry entry in fruits!")_x000D_
}
_x000D_
This way is easiest one in my opinion.
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');
}
And Maybe Another way to do it is.
nameList.forEach(function(ItemList)
{
if(ItemList.name == 'item1')
{
alert('Item Exist');
}
}
you can simply use this:
var tmp = ['a', 'b'];
index = 3 ;
if( tmp[index]){
console.log(tmp[index] + '\n');
}else{
console.log(' does not exist');
}
This is exactly what the in
operator is for. Use it like this:
if (index in currentData)
{
Ti.API.info(index + " exists: " + currentData[index]);
}
The accepted answer is wrong, it will give a false negative if the value at index
is undefined
:
const currentData = ['a', undefined], index = 1;_x000D_
_x000D_
if (index in currentData) {_x000D_
console.info('exists');_x000D_
}_x000D_
// ...vs..._x000D_
if (typeof currentData[index] !== 'undefined') {_x000D_
console.info('exists');_x000D_
} else {_x000D_
console.info('does not exist'); // incorrect!_x000D_
}
_x000D_
If you are looking for some thing like this.
Here is the following snippetr
var demoArray = ['A','B','C','D'];_x000D_
var ArrayIndexValue = 2;_x000D_
if(demoArray.includes(ArrayIndexValue)){_x000D_
alert("value exists");_x000D_
//Array index exists_x000D_
}else{_x000D_
alert("does not exist");_x000D_
//Array Index does not Exists_x000D_
}
_x000D_
var fruits = ["Banana", "Orange", "Apple", "Mango"];_x000D_
if(fruits.indexOf("Banana") == -1){_x000D_
console.log('item not exist')_x000D_
} else {_x000D_
console.log('item exist')_x000D_
}
_x000D_
(typeof files[1] === undefined)?
this.props.upload({file: files}):
this.props.postMultipleUpload({file: files widgetIndex: 0, id})
Check if the second item in the array is undefined using the typeof
and checking for undefined
If elements of array are also simple objects or arrays, you can use some function:
// 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;
}
});
I had to wrap techfoobar's answer in a try
..catch
block, like so:
try {
if(typeof arrayName[index] == 'undefined') {
// does not exist
}
else {
// does exist
}
}
catch (error){ /* ignore */ }
...that's how it worked in chrome, anyway (otherwise, the code stopped with an error).
var myArray = ["Banana", "Orange", "Apple", "Mango"];
if (myArray.indexOf(searchTerm) === -1) {
console.log("element doesn't exist");
}
else {
console.log("element found");
}
Consider the array a:
var a ={'name1':1, 'name2':2}
If you want to check if 'name1' exists in a, simply test it with in
:
if('name1' in a){
console.log('name1 exists in a')
}else
console.log('name1 is not in a')
If you use underscore.js then these type of null and undefined check are hidden by the library.
So your code will look like this -
var currentData = new Array();
if (_.isEmpty(currentData)) return false;
Ti.API.info("is exists " + currentData[index]);
return true;
It looks much more readable now.
const arr = []
typeof arr[0] // "undefined"
arr[0] // undefined
If boolean expression
typeof arr[0] !== typeof undefined
is true then 0 is contained in arr
When trying to find out if an array index exists in JS, the easiest and shortest way to do it is through double negation.
let a = [];
a[1] = 'foo';
console.log(!!a[0]) // false
console.log(!!a[1]) // true
Source: Stackoverflow.com