在 JavaScript 中创建一些关联数组

Creating some associative array in JavaScript

我有一个包含数组的对象,我希望它包含一个关联数组,因此键是字符串。我该怎么做?

这不起作用:

{profiles: { easy:["example" : 1], advanced:["example" : 1] }

我想避免

console.log({profiles: { easy: {"example": 1}, advanced:{"example": 1} })

因为easyadvanced成员不是显示为数组而是显示为对象。

我知道的另一种方式是:

array['key2'] = 'new value';

但这不是对象的一部分,所以我需要将命令拆分为多行 - 这不是我想要的。

PHP 有类似 array("mykey" => "myValue") 的东西,但是 JavaScript 有类似的东西吗?

但我不想使用框架。这只是 JavaScript。

JavaScript 没有 "associative arrays".

它有对象,您可以在命名属性中存储值。

它有数组,通过整数属性存储一组有序的值。由于它们是一种对象,您还可以在它们上存储命名值(但您不能使用文字语法创建它们,只能在创建数组后添加它们)但这不是好的做法,它们将是几乎被任何对数组有特殊情况处理的东西忽略。

从 ES6 开始,它还有 Maps,这与对象相似,您可以为它们提供命名值,但也可以保留该顺序的数组。没有用于创建地图的文字语法。

wanted to avoid console.log({profiles: { easy:{"example" : 1},advanced:{"example" : 1} })

为什么?是否有理由避免特定于语言的功能?

如果我告诉你你可以这样做(应该避免):

var array = [];
array["foo"] = "bar";
array.foo // -> bar

它的问题:

array.length // -> 0

因此,即使您可以将属性应用于 大部分 JavaScript 中的所有内容,例如:

var str = "hello";
str.type = "greetings";

你不应该搞砸语言...

这是创建 key:value 地图、对象的正常方法:

var obj = {foo: "bar"}
obj.foo // -> bar

为什么不像语言设计的那样去做呢?