任何人都可以帮助解释为什么长度返回0?非常感谢你提前!
var errors = []; errors[''] = "Monday Morning slot already taken. Would you like to replace it?"; console.log(errors); document.write(errors.length);
cookie monst.. 21
只有数字索引会影响.length
数组.
允许使用其他命名属性,但它们不是Array对象的典型用法.通过使用""
,您将在对象上创建非数字属性.您可以像这样访问它:
errors[""];
但是你不能用典型的Array方法来实现它.
对于命名属性,通常使用Object.无论哪种方式,您都可以通过使用获得自己的可枚举属性(包括数字索引)的数量Object.keys()
.
Object.keys(errors).length;
Derek 朕會功夫.. 6
因为这不是你添加项目的方式,因为Arrays只接受数字键.你这样做:
errors.push("blah"); /*or*/ errors[0] = "blah"; //Now if you check the length: errors.length; //1
此外,如果您将其用作对象,''
则也不是有效名称.
*更正:看起来你可以使用""
(空字符串)作为键.