我有包含数组的对象,我希望它包含关联数组,因此键是字符串。怎么做?这不起作用:
{profiles: { easy:["example" : 1],advanced:["example" : 1] }
我想避免
console.log({profiles: { easy:{"example" : 1},advanced:{"example" : 1} })
因为 easy 和高级成员不会显示为数组而是显示为对象。
我知道的另一种方式是: 数组[' key2'] ='新值&#39 ;; 但这不是对象的一部分,所以我需要拆分多行的命令 - 这不是我想要的。
PHP有类似数组的东西(" mykey" =>" myValue"),但JavaScript有类似的东西吗?
但我不想使用框架,这只是JavaScript。
答案 0 :(得分:6)
JavaScript没有“关联数组”。
它有对象,您可以在命名属性中存储值。
它有数组,它通过整数属性存储一组有序的值。由于它们是一种对象,您也可以在它们上存储命名值(但是您不能使用文字语法创建它们,只能在创建数组后添加它们)但这不是好的做法,它们将是被几乎所有对数组进行特殊处理的事情都忽略了。
从ES6开始,它也有Maps,它与对象类似,你可以给它们命名值,但也保留了那个顺序的数组。创建Map没有文字语法。
答案 1 :(得分:1)
希望避免
console.log({profiles: { easy:{"example" : 1},advanced:{"example" : 1} })
为什么,有理由避免语言特定的功能吗?
如果我告诉你你可以这样做:(应该避免)
var array = [];
array["foo"] = "bar";
array.foo // -> bar
问题:
array.length // -> 0
所以,即使您可以将属性主要应用于js中的所有内容,例如:
var str = "hello";
str.type = "greetings";
你不应该搞这种语言..
这是创建键的常规方法:值映射,对象。
var obj = {foo: "bar"}
obj.foo // -> bar
为什么不这样做,就像语言设计的那样?