2012-09-20 27 views
2

为什么下面的jQuery代码有时抛出的错误 “CONCAT不是一个函数”:jQuery.map(....)CONCAT不是一个函数

var myArray = $('div.foo') 
    .filter(function() { return $(this).is('.something'); }) 
    .map(function() { 
     return [['a', 'b', $(this).val()]]; 
    }); 

return myArray.concat(anotherArray); 

回答

5

$().map()返回一个jQuery对象,而不是数组。
jQuery对象没有concat()方法。您需要拨打.get()才能获得真实的数组。

+0

阿确定,jQuery的文档在这方面是恼人的道:“$ .MAP()方法应用一个函数的每个项目中的阵列或对象,并将结果映射到一个新的数组中。“ – cbp

+0

是的,但在这种情况下,您正在使用jQuery对象,而不是数组。 '$ .map(myArray,function(){})'与$('selector')不一样map(function(){})' – BLSully

+0

啊我明白了。 – cbp