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

问题描述 投票:1回答:2

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

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

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

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

javascript arrays object associative-array
2个回答
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
投票

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);
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.