我正在使用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
。我仍然无法使用上面的代码检测到不存在的元素。
答案 0 :(得分:293)
使用typeof arrayName[index] === 'undefined'
即
if(typeof arrayName[index] === 'undefined') {
// does not exist
}
else {
// does exist
}
答案 1 :(得分:74)
var myArray = ["Banana", "Orange", "Apple", "Mango"];
if (myArray.indexOf(searchTerm) === -1) {
console.log("element doesn't exist");
}
else {
console.log("element found");
}
答案 2 :(得分:3)
我必须在try
.. catch
块中包含techfoobar的答案,如下所示:
try {
if(typeof arrayName[index] == 'undefined') {
// does not exist
}
else {
// does exist
}
}
catch (error){ /* ignore */ }
......无论如何,它是如何在chrome中工作的(否则,代码会因错误而停止)。
答案 3 :(得分:3)
如果数组元素也是简单对象或数组,则可以使用some函数:
// 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;
}
});
答案 4 :(得分:3)
这些天我会利用 ecmascript 并像那样使用它
return myArr?.[index]
答案 5 :(得分:1)
如果使用underscore.js,则库会隐藏这些类型的null和undefined检查。
所以你的代码看起来像这样 -
var currentData = new Array();
if (_.isEmpty(currentData)) return false;
Ti.API.info("is exists " + currentData[index]);
return true;
现在看起来更具可读性。
答案 6 :(得分:1)
你可以简单地使用它:
var tmp = ['a', 'b'];
index = 3 ;
if( tmp[index]){
console.log(tmp[index] + '\n');
}else{
console.log(' does not exist');
}
答案 7 :(得分:1)
在我看来,这种方式最简单。
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');
}
}
答案 8 :(得分:1)
检查项目是否存在的简单方法
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")
答案 9 :(得分:0)
单行验证。最简单的方法。
layer = MCM_feature_extractor.get_layer(index=132)
config = layer.get_config()
weights = layer.get_weights()
config['name'] = layer.name+'_2'
second_layer = type(layer).from_config(config)
second_layer.build(layer.input_shape)
second_layer.set_weights(weights)
second_layer = second_layer(title_input)
输出
return !!currentData[index];
答案 10 :(得分:0)
if(typeof arrayName[index] == undefined) {
console.log("Doesn't exist")
}
else {
console.log("does exist")
}
答案 11 :(得分:0)
这也很好用,针对undefined
按类型进行测试。
if (currentData[index] === undefined){return}
测试:
const fruits = ["Banana", "Orange", "Apple", "Mango"];
if (fruits["Raspberry"] === undefined){
console.log("No Raspberry entry in fruits!")
}
答案 12 :(得分:0)
const arr = []
typeof arr[0] // "undefined"
arr[0] // undefined
如果是布尔表达式
typeof arr[0] !== typeof undefined
为true,则arr中包含0
答案 13 :(得分:0)
这正是in
运算符的作用。像这样使用它:
if (index in currentData)
{
Ti.API.info(index + " exists: " + currentData[index]);
}
accepted answer 是错误的,如果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!
}
答案 14 :(得分:0)
var fruits = ["Banana", "Orange", "Apple", "Mango"];
if(fruits.indexOf("Banana") == -1){
console.log('item not exist')
} else {
console.log('item exist')
}
答案 15 :(得分:0)
如果我错了,请有人纠正我,但是 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
答案 16 :(得分:0)
如果您正在寻找类似的东西。
以下是以下片段
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
}
答案 17 :(得分:0)
var demoArray = ['A','B','C','D'];
var ArrayIndexValue = 2;
if(ArrayIndexValue in demoArray){
//Array index exists
}else{
//Array Index does not Exists
}
答案 18 :(得分:0)
(typeof files[1] === undefined)?
this.props.upload({file: files}):
this.props.postMultipleUpload({file: files widgetIndex: 0, id})
使用typeof
并检查undefined
来检查数组中的第二项是否未定义
答案 19 :(得分:-1)
当试图确定JS中是否存在数组索引时,最简单,最短的方法是通过双重求反。
let a = [];
a[1] = 'foo';
console.log(!!a[0]) // false
console.log(!!a[1]) // true