Почему индекс создается автоматически в массиве javascript? - PullRequest
1 голос
/ 12 апреля 2019

Если я пытаюсь создать ассоциативный массив, используя цифру в качестве свойства, он автоматически вставляет другие значения с нулевыми значениями.

Я попытался передать строку (myArray ['myProp']), длина массива равна нулю, чтовремя.Это происходит только в том случае, если я передаю цифры, независимо от формы строки.

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

Я хочу знать, какая логика стоит за этим.

Ответы [ 2 ]

3 голосов
/ 12 апреля 2019

Это потому, что вы сохраняете значение для индекса 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 голос
/ 12 апреля 2019

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);
...