鉴于此:
<a href="1">1</a>
<a href="2">2</a>
这是一个返回href值数组的函数:
e = $('a').map(function(v) { return $(this).attr('href'); });
console.log(e);
但它给出了
["1", "2", prevObject: x.fn.x.init[2], context: document, jquery: "1.10.2", constructor: function, init: function…]
如何将其修改为仅返回原始数组[“1”,“2”]?
答案 0 :(得分:30)
因为jQuery.fn.map
返回一个新的jQuery对象,你应该使用jQuery.fn.get
来获取一个数组:
var a = $('a').map(function(v, node) {
// v is the index in the jQuery Object,
// you would maybe like to return the domNode or the href or something:
// return node.href;
return v;
}).get(); // <-- Note .get() converts the jQuery Object to an array
微优化:
如果您查看jQuery.fn.get
的源代码,可以看到它指向jQuery.fn.toArray
:
function ( num ) {
return num == null ?
// Return a 'clean' array
this.toArray() :
// Return just the object
( num < 0 ? this[ this.length + num ] : this[ num ] );
}
所以你也可以打电话:
$('a').map(...).toArray();