Javascript 返回对象属性映射时出现jQuery.map错误
在以下示例中: HTML: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
<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();