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

Javascript 返回对象属性映射时出现jQuery.map错误,javascript,jquery,Javascript,Jquery,在以下示例中: HTML: <ul> <li id="0"></li> <li id="213"></li> <li id="324"></li> <li id="764"></li> </ul> 如果尝试使用本机数组方法,map函数将出错 如果您将返回的jq“array”解析为一个普通数组,则一切正常 这可能是什么原因 Fiddle:您的选择器是一个jQue

在以下示例中:

HTML:

<ul>
  <li id="0"></li>
  <li id="213"></li>
  <li id="324"></li>
  <li id="764"></li>
</ul>
如果尝试使用本机数组方法,map函数将出错

如果您将返回的jq“array”解析为一个普通数组,则一切正常

这可能是什么原因


Fiddle:

您的选择器是一个jQuery对象(
$(“ul”).children()
),因此
map
返回此jQuery对象列表:

jQuery("0", "213", "324", "764")
要获得阵列,必须使用:

您可以查看此提琴:

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

var map = $("ul").children().map(function(i, el) {
    return el.id;
}).get();

jquery对象不是数组,因此没有
join
方法。首先调用
.get()。使用
map.get().join(“:”)
@FelixKling comments几乎概括了Tank you的内容,但让我困惑的是,该结构类似于数组,即:[val,val,val]。有没有可能在JS中模拟这样的结构而不使用数组?是的。每个具有数值属性和
.length
属性的对象都是类似于数组的对象。仔细想想,由于jquery对象通常包含DOM元素,当您用字符串连接它们时,会发生什么情况?下面是关于类似数组的对象的更多信息:
console.log(map.toArray().join(":"));
var map = $("ul").children().map(function(i, el) {
    return el.id;
}).get();