返回对象属性的映射时出现jQuery.map错误

时间:2014-06-16 14:11:41

标签: javascript jquery

在以下示例中:

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'数组'解析成普通数组 - 一切正常。

它可能是什么原因?

小提琴:http://jsfiddle.net/hQZqU/1/

2 个答案:

答案 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