Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JavaScript—声明关联数组的简短方法_Php_Javascript_Arrays - Fatal编程技术网

Php JavaScript—声明关联数组的简短方法

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

有没有一种像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 "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”]
vs
myArray.a
“告诉…”的唯一方法”您忘记了
[]数组的实例
对象.prototype.toString.call([])
数组.isArray([])
;o) 这与
myObject.a='b'相同,因为只要属性名是有效的JS变量名,就可以使用点表示法,所以不能对
myObject['no dot!']='b'
使用点表示法。当然,javascript有关联数组。无论出于何种目的,这就是Javascript对象。它在引擎盖下的工作方式既不在这里也不在那里。@RichardRiley-JavaScript对象是。顺序的概念可能是数组的关键点。这不是100%正确的,二者也不相同。您不能按顺序对对象进行迭代,因为它不像设计为可迭代的数组那样工作。问题是如何以不可重复的方式创建这样的数组。