我遇到了这个用于在数组中保持正向和反向引用的代码:
var arr = [];
arr[arr['A'] = 0] = 'A';
arr[arr['B'] = 1] = 'B';
// On node interpreter
arr // [ 'A', 'B', A: 0, B: 1 ]
arr["A"] // 0
arr["B"] // 1
arr[0] // 'A'
arr[1] // 'B'
arr[2] // 'undefined'
arr.length // 2
A: 0, B: 1
成员被推到数组的末尾。
这些成员是什么以及在此过程中发生了什么,以便.length
属性记录2而不是4?
答案 0 :(得分:1)
使用字符串键将值存储到数组中实际上不会修改数组。它只向Array
对象添加动态字段,而不像使用数字索引存储,实际上将值推入数组中。Array.length
仅反映数组中元素的数量,由数组,但不是数组中动态字段的数量。
答案 1 :(得分:0)
var arr = [];
arr["A"] = 2;
在这里,您要向数组对象添加一个属性,该属性不会反映数组中元素的数量。在javascript中,数组元素始终使用索引存储。 Array.length始终返回存储在数组中的元素数。