sbi*_*nko 47 javascript arrays syntax
考虑这个示例Javascript代码:
a = new Array();
a['a1']='foo';
a['a2']='bar';
b = new Array(2);
b['b1']='foo';
b['b2']='bar';
c=['c1','c2','c3'];
console.log(a);
console.log(b);
console.log(c);
Run Code Online (Sandbox Code Playgroud)
Firebug控制台中的结果如下:
对于a('[]'必须通过单击'+'按钮进行扩展):
[]
a1 "foo"
a2 "bar"
Run Code Online (Sandbox Code Playgroud)
对于b:
[undefined, undefined]
Run Code Online (Sandbox Code Playgroud)
对于c:
["c1", "c2", "c3"]
Run Code Online (Sandbox Code Playgroud)
我的问题是:
注意: Google Chrome的Firebug仅显示数组'a'的[],但无法展开它.
编辑:好吧,似乎Javascript中的数组只有数字键,因此添加一个字符串作为键名会使一个对象脱离数组.但是为什么jQuery的.each不能用呢?
$.each(a, function ()
{
alert ('derp');
})
Run Code Online (Sandbox Code Playgroud)
附加到脚本的此代码不会生成警报.
jfr*_*d00 59
数组有数字索引.所以,
a = new Array();
a['a1']='foo';
a['a2']='bar';
and
b = new Array(2);
b['b1']='foo';
b['b2']='bar';
Run Code Online (Sandbox Code Playgroud)
不将元素添加到阵列中,但添加.a1和.a2特性的a对象(数组是对象太).作为进一步的证据,如果你这样做:
a = new Array();
a['a1']='foo';
a['a2']='bar';
console.log(a.length); // outputs zero because there are no items in the array
Run Code Online (Sandbox Code Playgroud)
你的第三个选择:
c=['c1','c2','c3'];
Run Code Online (Sandbox Code Playgroud)
将变量赋给c一个包含三个元素的数组.这三个元素可以访问:c[0],c[1]和c[2].换句话说,c[0] === 'c1'和c.length === 3.
Javascript不会将其数组功能用于其他语言调用关联数组,您可以在数组中使用任何类型的键.您可以通过在javascript中使用一个对象来实现关联数组的大部分功能,其中每个项目只是这样的属性.
a = {};
a['a1']='foo';
a['a2']='bar';
Run Code Online (Sandbox Code Playgroud)
将数组用于此目的通常是错误的,因为它只会让读取代码的人感到困惑,并导致对代码如何工作的错误假设.