首页 > 解决方案 > 在数组的负索引中添加元素?

问题描述

arr = Array(10).fill(false)
arr[-2] = true

console.log(arr)
[false, false, false, false, false, false, false, false, false, false, -2: true]

console.log(arr.length) // 10

我很惊讶在数组的负索引中添加一个元素,在数组中添加一个键值对。而且,数组的长度不会增加吗?

标签: javascript

解决方案


数组是数字索引的,但棘手的是它们也是可以添加字符串键/属性的对象(但不计入数组的长度):

数组中的索引从0后面开始,即它们可以是正数。

当您尝试访问数组中的负索引时,a[-1]它将充当键并将-1作为键存储"-1"在数组中,该数组也是一个对象。但它不会计入数组的长度,只有数字索引才会计入数组的长度。您可以在 javascript 中将数组称为对象的子类型


let a = [];
a[0] = 9;
a[-1] = 10; // will act as key "-1" added to object a with value 10
console.log(a); //[9]
console.log(a["-1"]); //10
console.log("Length of array " + a.length); // 1, key "-1" will not contribute to the lenght of an array

我建议你阅读这篇文章


推荐阅读