我读过那个数组可以是map
,那为什么它会给出错误的结果呢?
是否有简单的本地方式在JavaScript中使用map然后获取它的长度?
var f = [];
f["1_f_1"] = "1";
f["2_f_2"] = "2";
f["3_f_3"] = "3";
alert(f.length);
打印:0
答案 0 :(得分:5)
答案 1 :(得分:2)
JavaScript中的数组只是一种特殊的对象。如果Array对象的键是有效的Array索引(正整数),那么它将被视为数组元素。引用specification,
整数索引是一个字符串值属性键,它是一个规范数字字符串(见7.1.16),其数值为+0或正整数≤2 53 -1。数组索引是整数索引,其数值i在+0≤i<1的范围内。 2 32 -1。
在您的情况下,您将创建三个不是有效数组索引的新属性。这就是为什么它们不被视为数组元素,而只是数组对象的属性。
如果要存储这些字符串,则应将它们存储在Object中,如另一个答案中所示。
答案 2 :(得分:1)
JavaScript中没有count all enumerable properties found directly upon object
。虽然,有一些具有命名属性的对象。通常所说的“关联数组”实际上只是Javascript中的一个对象。如果你想得到元素的长度,你需要Object.keys(obj).length
或者只需使用: -
registerClass