Javascript关联数组不支持Array.prototype.map函数

时间:2018-05-28 11:43:00

标签: javascript arrays

经过长时间的编程,我不知道为什么从未见过这个:

var array = [];
array['one'] = 1;

console.log(array.length);

这是一个表示array.length为零(0)的小提琴:
https://jsfiddle.net/0c9v5txe/1/

当然,我不需要数组的长度,array.map为零时只有length无效。

在添加新项目时,是否真的有办法强制Javascript更新关联数组的length

2 个答案:

答案 0 :(得分:3)

JavaScript没有名为“关联数组”的功能。

它有对象,而数组是一种用于保存数字索引值的对象。 (数组上的length属性是根据编号最大的数字属性计算的。)

(因为数组是一种对象,你可以在它们上存储任意属性,但这不是一个好习惯)。

如果要存储命名属性,请不要使用数组。使用普通对象或Map。它们与其他语言中的关联数组具有相同的用途。

您可以通过将对象提取到数组中然后检查其长度来计算对象的枚举属性。

var myObject = {};
myObject.one = 1;
console.log(Object.keys(myObject).length);

答案 1 :(得分:0)

你需要传递索引,而不是值 array [index] = value;

var array = [];
array[0] = "one";

console.log(array.length)