这是我的代码:
// My object
var fakeArray = { "length": 2, 0: "Addy", 1: "Subtracty" };
// Convert my object to a real array
var realArray = $.makeArray( fakeArray )
// Use $.map() to a
$.map( realArray, function( val, i ) {
alert(val);
});
警报提供"Addy"
和"Subtracty"
,但完全忽略了"length": 2
键值对。当我交换"length": 2
// Swap 2 and "length"
var fakeArray = { 2: "length", 0: "Addy", 1: "Subtracty" };
它仅警告对象(即[object Object]
)
是什么给了什么?
答案 0 :(得分:3)
因为$.makeArray
应该适用于类似数组的对象。
具有.length
属性 1 的对象将从0
迭代到length
,并且每个属性值将被推送到结果数组。非整数键将被连贯地忽略。
所有其他对象将简单地包装在一个数组中。
> $.makeArray({"length": 2, 0: "Addy", 1: "Subtracty"})
["Addy", "Subtracty"]
> $.makeArray({0: "Addy", 1: "Subtracty", 2: "length"})
[{0: "Addy", 1: "Subtracty", 2: "length"}]
1:有关确切定义,请参阅isArrayLike