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

Why index gets automatically created in javascript array?

如果我尝试使用数字作为 属性 创建关联数组,它会自动插入具有空值的其他值。

我尝试传递一个字符串 (myArray['myProp']),当时数组长度为零。只有当我传递数字时才会发生,无论是字符串形式。

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

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

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

一个对象最有可能做到这一点?

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

或者地图?

const myMap = new Map();
myMap.set(5, 'My value');
console.log(myMap.size;) // 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);