数组长度返回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 长度数组

python如何规定形参数组长度

// 如果(翻页的时候页面没有数据的话) 接口返回的数组长度为0的时候 直接阻止

测试数组长度

字符串长度函数如何计算?从开始到第一个\0

strlen函数求字符串长度和字符数组长度(0,’0‘,“0”,‘