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

jQuery.map errors when returning a map of object properties

本文关键字:映射 错误 jQuery 对象 属性 返回      更新时间:2023-09-26

示例如下:

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/

你的选择器是一个jQuery对象($("ul").children()),所以map返回这个jQuery对象列表:

jQuery("0", "213", "324", "764")

为了有一个数组,你必须使用toArray:

console.log(map.toArray().join(":"));

你可以看看这个提琴:http://jsfiddle.net/hQZqU/2/

.map()将返回jquery对象,但.get()对结果使用基本数组。

var map = $("ul").children().map(function(i, el) {
    return el.id;
}).get();
<<p> jsfiddle演示/strong>