有没有其他方法可以在没有JSON的情况下创建JavaScript关联数组?

有没有其他方法可以在没有JSON的情况下创建JavaScript关联数组?,javascript,Javascript,我想知道是否有另一种方法可以在JavaScript中使用关联数组而不必使用JSON 现在我知道了: var json = '{ "color": [ "red", "blue" ], "name": "Ionut" }'; 是否有其他方法来声明关联数组?例如在PHP中。是的,只需省略外部引号: var foo = { "color": [ "red", "blue" ], "name": "Ionut" }; // access var color = foo['color']; // m

我想知道是否有另一种方法可以在JavaScript中使用关联数组而不必使用JSON

现在我知道了:

var json = '{ "color": [ "red", "blue" ], "name": "Ionut" }';

是否有其他方法来声明关联数组?例如在PHP中。

是的,只需省略外部引号:

var foo = { "color": [ "red", "blue" ], "name": "Ionut" };

// access
var color = foo['color'];

// modify
foo['name'] = 'Better name';

// add
foo['bar'] = 'baz';
详细说明:JSON是一种序列化格式。它描述了如何将JavaScript对象转换为字符串并返回

该标准是围绕普通JavaScript对象发展而来的,允许模拟关联数组。

类似的东西

var json = {};
json[ "color" ] = [];
json[ "color" ].push( "red" );
json[ "color" ].push( "blue" );
// or json[ "color" ] = [ "red", "blue" ];
json[ "name" ] = "Ionut";    

JSON是一种基于文本的数据格式,只与JavaScript有切分关系

JavaScript通过对象及其属性实现了类似数组的关联功能

这种方法的局限性在于键必须是字符串(或ES2015中的符号)

因此,JavaScript中关联数组的语法为:

var a = { 
  'key1': 'value1', 
  'key2': 'value2', 
  /* ... */ 
};

在JavaScript中实现类似功能的唯一其他方法是更现代的
Map
WeakMap
,它们扩展了允许对象作为键的功能
WeakMap
键不会阻止用作键的对象的垃圾收集。

您的意思是like
var foo={“color”:[“red”,“blue”],“name”:“Ionut”}?请注意,对象!==关联数组。JavaScript没有关联数组。为什么要创建JavaScript对象(基本上是带字符串键的关联数组),而不使用JavaScript对象标记?@Ben这个答案在语义上是正确的,但可能完全没有用处你可能对这里的某些事情感到困惑。。。Javascript有键值映射、也称为对象和列表、也称为数组。PHP只有用于这两个目的的数组(关联键值对和索引列表)。PHP对象是PHP拥有的另一个东西,但它主要用于实例化类。Javascript没有后者。那么,你想要什么?键值对?然后你需要Javascript对象,我认为PHP有一个单一的数据结构,充当键控集合和索引集合,这是个例外。语言通常对此有单独的数据结构:JavaScript中的对象和数组,Python中的dicts和list。@deceze:JavaScript对象具有在简单关联数组中找不到的属性。因此,您可以模拟它们,但它们不是保存。您可以使用关联数组“模拟”Javascript对象的各个方面,反之亦然。用另一个事物来接近一个事物的功能是很奇怪的。PHP和JS是不同的野兽,它们都有自己的习惯用法。你需要从这个角度来学习,而不是如何最好地“模仿”一个使用另一个。