这将用于测试一个值在位置索引是否存在,或者有更好的方法:
if(arrayName[index]==""){
// do stuff
}
这将用于测试一个值在位置索引是否存在,或者有更好的方法:
if(arrayName[index]==""){
// do stuff
}
当前回答
仅使用.length是不安全的,在某些浏览器中会导致错误。这里有一个更好的解决方案:
if(array && array.length){
// not empty
} else {
// empty
}
或者,我们可以用:
Object.keys(__array__).length
其他回答
这取决于你对“空”的定义。
当您试图获取一个对象的属性值时,该对象没有该名称的属性,您将获得该值为undefined。
这就是稀疏数组的情况:不是所有的索引都在0和数组之间。长度为1的存在。
所以你可以检查array[index] === undefined。
但是,属性索引可能存在一个未定义的值。如果你想过滤掉这种情况,你可以使用in操作符或hasOwnProperty,如如何检查一个对象在JavaScript中是否有属性所述?
index in array;
array.hasOwnProperty(index);
如果你想要考虑一个具有未定义或空值的现有属性不存在,你可以使用松散比较数组[index] == undefined或数组[index] == null。
如果你知道数组不是稀疏的,你可以比较index和array.length。但为了安全起见,您可能希望确保index确实是数组索引,请参阅检查属性名称是否为数组索引
你可以使用Loadsh库来更有效地做到这一点,比如:
如果你有一个名为“pets”的数组,例如:
var pets = ['dog', undefined, 'cat', null];
console.log(_.isEmpty(pets[1])); // true
console.log(_.isEmpty(pets[3])); // true
console.log(_.isEmpty(pets[4])); // false
_.map( pets, (pet, index) => { console.log(index + ': ' + _.isEmpty(pet) ) });
检查所有数组值是否为空或未定义的值:
Var pets = ['dog', undefined, 'cat', null]; 宠物console.log (_.isEmpty ([1]));/ /正确的 console.log (_.isEmpty(宠物[3]));/ /正确的 console.log (_.isEmpty(宠物[4]));/ /错误 _。地图(宠物,宠物,指数= > {console.log(指数 + ': ' + _. isEmpty (pet))}); < script src = " https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js " > < /脚本>
更多例子请访问http://underscorejs.org/
我认为这个决定适合那些喜欢声明式函数编程而不是命令式OOP或过程式编程的人。如果你的问题是“里面有价值吗?”(一个真实或虚假的值)”你可以使用。some方法来验证里面的值。
[].some(el => el || !el);
它并不完美,但它不需要应用任何包含相同逻辑的额外函数,如function isEmpty(arr){…}。 当我们这样做[]时,它听起来仍然比“它是零长度吗?”要好。长度导致0,在某些情况下是危险的。 甚至是这个[]。length > 0表示它的长度是否大于0 ?
先进的例子:
[ ].some(el => el || !el); // false
[null].some(el => el || !el); // true
[1, 3].some(el => el || !el); // true
如果数组[index]为空,请尝试此操作
if (array[index] != null)
当你创建的空数组值不是undefined时,它们是empty
var arr = new Array(10); // (10) [empty × 10]
但是当你通过索引获取item时,receive undefined
arr[0]; // undefined
所以你不能通过===比较知道它们是未定义的还是空的
我们可以使用JSON。Stringify,转换整个数组,将空值替换为null
JSON.stringify(arr); // "[null,null,null,null,null,null,null,null,null,null]"
JSON.stringify(arr[0]); // but for single item it returns undefined
对空值的实检查:
arr[0] !== null && JSON.stringify(arr.map(item => !item)).slice(1, -1).split(',')[0] === 'null'
将item与null进行比较(不应等于) 映射数组删除false代替现有值(确保字符串结构用逗号分隔,没有多余的逗号) JSON。stringify数组 从字符串中移除括号 用逗号分割成数组 与null比较