为什么索引会在javascript数组中自动创建?

时间:2019-04-12 06:04:12

标签: javascript arrays object associative-array

如果我尝试使用digit作为属性来创建关联数组,则会自动使用空值插入其他值。

我尝试传递一个字符串(myArray ['myProp']),那个时候数组长度为零。无论我以数字形式传递数字,都是如此。

const myArray = [];
myArray[5] = 'My value'; // say index is 5 here
console.log(myArray.length); 

我想知道背后的逻辑是什么。

2 个答案:

答案 0 :(得分:3)

那是因为您要在数组中存储索引5的值。

一个对象很可能会成功?

const obj = {};
obj["5"] = "My value";
// { "5": "My value" }

也许是地图?

const myMap = new Map();
myMap.set(5, 'My value');
console.log(myMap.size;) // 1

答案 1 :(得分:1)

myArray[5]将尝试查看第5个索引,但是它不能跳过0-4,在这种情况下,它们将被undefined填充。您可以使用Object.values给出除undefined以外的任何内容,并检查其长度

const myArray = [];
myArray[5] = 'My value'; // say index is 5 here
console.log(myArray);
// get everything except undefined
let newArr = Object.values(myArray)
console.log(newArr.length);