abu*_*uba 39 javascript arrays
为什么使用字符串作为数组的键,控制台显示没有这些声明值的数组,并且在没有显示键为字符串的值时进行迭代?虽然我可以获得它们的价值.
>> var arr = [ 0, 1, 2, 3 ];
undefined
>> arr["something"] = "aught";
"aught"
>> arr
[0, 1, 2, 3]
>> arr["something"]
"aught"
>> for( var i = arr.length; i--; console.log( arr[ i ] ) );
3
2
1
0
Run Code Online (Sandbox Code Playgroud)
我知道数组是在javascript引擎中实现了某种"枚举"接口的对象.最有趣的是,解释器不会抛出任何警告或错误,因此我花了一些时间来搜索数据可能丢失的位置.我现在,我错了,我用console而不是console
Dar*_*rov 83
在javascript中有两种类型的数组:标准数组和关联数组
[ ] - 标准数组 - 仅基于0的整数索引{ } - 关联数组 - javascript对象,其中键可以是任何字符串所以当你定义:
var arr = [ 0, 1, 2, 3 ];
Run Code Online (Sandbox Code Playgroud)
您正在定义一个标准数组,其中索引只能是整数.当你这样做arr["something"],因为something(这是你作为指数使用什么)是不是你基本上是定义一个属性到一个整数arr对象(一切都在JavaScript对象).但是你没有在标准数组中添加元素.
fan*_*gen 11
for( var i = arr.length; i--; console.log( arr[ i ] ) );
当然,这只会给你数字索引,但你仍然可以循环遍历数组的数字索引和字符串键,如下所示:
for (var x in arr) {
console.log(x + ": " + arr[x]);
}
/* (console output):
0: 0
1: 1
2: 2
3: 3
something: aught
*/
Run Code Online (Sandbox Code Playgroud)