Php JavaScript—声明关联数组的简短方法
有没有一种像PHP那样声明关联数组的简单方法Php JavaScript—声明关联数组的简短方法,php,javascript,arrays,Php,Javascript,Arrays,有没有一种像PHP那样声明关联数组的简单方法 $myArray = array('a' => 'b'); // PHP Way 在JavaScript中,我会这样做: var myArray = []; myArray['a'] = 'b'; 我没有寻找JavaScript对象。声明如下对象: var myArray = {"a": "b", "c": "d"}; var somethingElse = myArray["a"]; //Sets "somethingElse" to
$myArray = array('a' => 'b'); // PHP Way
在JavaScript中,我会这样做:
var myArray = [];
myArray['a'] = 'b';
我没有寻找JavaScript对象。声明如下对象:
var myArray = {"a": "b", "c": "d"};
var somethingElse = myArray["a"]; //Sets "somethingElse" to "b".
。。。然后参照以下各项:
var myArray = {"a": "b", "c": "d"};
var somethingElse = myArray["a"]; //Sets "somethingElse" to "b".
正如@Chris和@Marc在注释中提到的:在JavaScript中,对象是关联数组,反之亦然,它们只是引用了两种不同的方法来完成相同的事情。例如
var somethingElse = myArray["a"];
var anotherVariable = myArray.a;
。。。做同样的事情。JavaScript没有关联数组。在您的示例中,您将
myArray
声明为array,但随后为其分配了一个对象。因此,您的代码与此相同:
var myObject = {};
myObject['a'] = 'b';
更新:一点修正。实际上,原始代码并没有破坏数组。它只是给它附加了一个常规属性。这是可能的,因为JavaScript数组是JavaScript对象的子集
我不是在寻找JavaScript对象
JavaScript中没有“关联数组”,只有由属性名和值组成的对象,可以这样处理。所以,你要找的其实是物体。事实上,您的问题中的这个示例正在处理一个对象:
var myArray = [];
myArray['a'] = 'b';
alert(typeof myArray); // 'object'
最初使用数组文字语法构造对象:
var myArray = [];
这意味着您已经创建了一个从Array.prototype
继承的对象。因此,本质上,您正在处理一个对象,该对象已使用存储在Array.prototype
中的方法进行了扩充
要检查myArray
是否实际上是一个数组(我会说JavaScript数组是伪数组),可以检查其构造函数:
alert(typeof myArray === 'object' && myArray.constructor === Array);
还有一种更好的方法可以识别在不同窗口和框架中构造的数组:
alert(Object.prototype.toString.apply(myArray) === '[object Array]');
您还可以使用instanceOf
:
alert(myArray instanceof Array);
或Array.isArray
:
alert(Array.isArray(myArray));
在javascript中,关联数组、键控集合、哈希。。。不管你想叫他们什么,他们都不是特殊类型的。以下都是好的
a = {}
a[3] = 15
a.b = "c"
a['def'] = 'something'
此代码生成一个具有预期属性的有效对象。都是。可以在一个对象中组合常规索引数组和关联数组
对于一次声明一整串,通常的语法是:
a = {
'key1' : 'val1',
'key2' : val2,
key3 : val3,
key4 : "val4"
}
“我不是在寻找JavaScript对象。”为什么不呢?你想在数组中使用非数字属性有什么特别的原因吗?一个朋友问了一个简短的方法,我没有找到。我只是想知道有没有捷径。如果你真的想要一个数组,而不是一个普通的对象,那么不,除了创建一个helper函数并传递一个对象来填充Array@dotweb:在使用JavaScript时避免对象很有趣。:)这已经被一次又一次地澄清了。请看右边的相关文章,您应该提到javascript.Error中没有关联数组。在javascript中,所有数组都是关联数组。@Chris-据我所知,关联数组和对象在javascript中基本上是一样的。它们只是指同一事物的不同方式。e、 g.
myArray[“a”]
vsmyArray.a
“告诉…”的唯一方法”您忘记了[]数组的实例
,对象.prototype.toString.call([])
和数组.isArray([])
;o) 这与myObject.a='b'相同代码>,因为只要属性名是有效的JS变量名,就可以使用点表示法,所以不能对myObject['no dot!']='b'
使用点表示法。当然,javascript有关联数组。无论出于何种目的,这就是Javascript对象。它在引擎盖下的工作方式既不在这里也不在那里。@RichardRiley-JavaScript对象是。顺序的概念可能是数组的关键点。这不是100%正确的,二者也不相同。您不能按顺序对对象进行迭代,因为它不像设计为可迭代的数组那样工作。问题是如何以不可重复的方式创建这样的数组。