首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript数组什么时候可以在key: value对中存储元素,其中的键具有'string‘值?

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

Stack Overflow用户
提问于 2018-08-16 04:01:48
回答 1查看 507关注 0票数 2

据说javascript中的所有东西都是对象。因此,为了详细理解这个概念,我编写了以下代码,但得到了一些意想不到的结果。

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

根据我的理解,数组只有在键值为number时才能保存值。为了将key存储为字符串,我们使用对象。然而,上面的代码导致了这一结果。

true
[ <2 empty items>, 'green', purple: 2 ]
true
true

typeof color将导致object,但这是所有数组的通用情况。在color变量中,purple: 2是一个有效的元素吗?color不应该是对象而不是数组吗?或者,有没有其他内置的方法可以让我检查变量是数组还是对象?

这些类型的问题以前也被问过,但场景略有不同。我寻找了这个特定的案例,但没有得到任何令人满意的结果。

EN

回答 1

Stack Overflow用户

发布于 2018-08-16 04:12:45

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

让我们把它分解一下。首先,它执行color['purple'] = 2。这将导致颜色为:[purple: 2]。如果您现在在控制台执行var color = []; color['purple'] = 2;,则输出将为2。

因此,在执行内部语句之后,等价的语句是color[2] = 'green'。由于这是一个数字赋值,它将值'green‘赋值给数组的第三个元素(位置2),并在位置0和位置1处创建两个空项。

因此,输出为:[<2 empty items>, green, purple: 2]

@js1568写得很好的答案。太棒了。

@Kartik Chauhan回答你的主要问题-“紫色”如何成为数组的有效键?

JS数组不仅仅是数值可访问的数组。它们更像是地图,其中的键可以是任何对象。您可以在浏览器控制台中尝试此代码。

var x = []; x[{name: "Kartik"}] = 25; x[{name: "Kartik"}];

输出将是25。

因此,紫色值是数组的有效键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51865641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档