在以下示例中:
HTML:
<ul>
<li id="0"></li>
<li id="213"></li>
<li id="324"></li>
<li id="764"></li>
</ul>
JS:
var map = $("ul").children().map(function(i, el) {
return el.id;
});
console.log(Array.prototype.slice.call(map).join(":")); // 0:213:324:764
console.log(map.join(":")); //error: Uncaught TypeError: undefined is not a function
如果尝试使用本机数组方法,则map函数会出错
如果你将返回的jq'数组'解析成普通数组 - 一切正常。
它可能是什么原因?
答案 0 :(得分:3)
你的选择器是一个jQuery对象($("ul").children()
),所以map
返回这个jQuery对象列表:
jQuery("0", "213", "324", "764")
要拥有数组,您必须使用toArray
:
console.log(map.toArray().join(":"));
你可以看看这个小提琴:http://jsfiddle.net/hQZqU/2/
答案 1 :(得分:0)
.map()
将返回jquery对象,但结果为.get()
以使用基本数组。
var map = $("ul").children().map(function(i, el) {
return el.id;
}).get();
<强> jsfiddle demo 强>