数组长度返回0
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组长度返回0相关的知识,希望对你有一定的参考价值。
任何人都可以帮助解释为什么长度返回0?非常感谢你提前!
var errors = [];
errors[''] = "Monday Morning slot already taken. Would you like to replace it?";
console.log(errors);
document.write(errors.length);
答案
因为这不是你添加项目的方式,因为Arrays只接受数字键。你这样做:
errors.push("blah"); /*or*/ errors[0] = "blah";
//Now if you check the length:
errors.length; //1
此外,如果您使用它作为对象,''
不是有效的名称
无论是。
*更正:看起来你可以使用""
(空字符串)作为键。
另一答案
只有数字索引才会影响数组的.length
。
允许使用其他命名属性,但它们不是Array对象的典型用法。通过使用""
,您将在对象上创建非数字属性。您可以像这样访问它:
errors[""];
但是你不能用典型的Array方法来实现它。
对于命名属性,通常使用Object。无论哪种方式,您都可以使用Object.keys()
计算自己的可枚举属性(包括数字索引)的数量。
Object.keys(errors).length;
另一答案
您的数组需要一个数字输入,您当前使用空字符串作为索引,这是无效的。
您可以指定索引,使用给定元素初始化Array,或将该项目推送到Array:
// Option 1: Specify index
var errors = [];
errors[0] = 'Monday Morning slot already taken. Would you like to replace it?';
// Options 2: Initialise the Array with values
var errors = ['Monday Morning slot already taken. Would you like to replace it?'];
// Option 3: Push the item to Array
var errors = [];
var myString = 'Monday Morning slot already taken. Would you like to replace it?';
errors.push(myString);
另一答案
当您使用字符串键而不是int时,javascript会将您的数组视为存储键/值对的对象。
正如@cookiemonster所提到的,你可以使用Object.keys(errors)来获取长度。
此外,您可以考虑使用JavaScript ES6 Map。
var errormap = new Map();
errormap.set('err101', 'Description for error 101');
errormap.set('err102', 'Description for error 102');
要基于错误键获取错误描述的描述:
console.log(errormap.get('err101'));
您只需编写以下内容即可获得Map对象的长度:
console.log(errormap.size);
以上是关于数组长度返回0的主要内容,如果未能解决你的问题,请参考以下文章
targetSdkVersion 23 通过 accountManager.getAccounts() 返回 0 长度数组