什么时候javascript数组可以在key:value对中存储元素,其中键具有'string'值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (645)

我编写了以下代码,但得到了一些意想不到的结果

var color = [];
console.log(color.constructor === Array);
color[color['purple'] = 2] = 'green';
console.log(color);
console.log(color.constructor === Array);
console.log(Array.isArray(color));

根据我的理解,数组只能在键为数字时才能保存值,要将密钥存储为字符串,然而,上述代码导致了这一点

true
[ <2 empty items>, 'green', purple: 2 ]
true
true
提问于
用户回答回答于

color是一个数组,所有数组都扩展对象,在这一行中你做了两件事:

color[color['purple'] = 2] = 'green'

1:color.purple = 2不向数组添加元素,设置了purple对象的属性color

2:color[2] = green上面的赋值语句解析为(返回)值2,这意味着color[2]在这种情况下需要分配

3:因为数组在索引2处具有值,所以还具有为索引0和1分配的空间(两个空格)

用户回答回答于

数组是类似列表的对象,其原型具有执行遍历和变异操作的方法,JavaScript数组的长度和元素的类型都不固定,由于数组的长度可以随时改变,并且数据可以存储在数组中的非连续位置,因此不能保证JavaScript数组密集,这取决于程序员如何选择使用它们

扫码关注云+社区

领取腾讯云代金券