试图在我认为的数组上使用join()会引发no方法错误

时间:2013-04-26 17:16:24

标签: javascript jquery

我有一份标签清单。我想在每个标签中获取文本,并将文本连接成逗号分隔的字符串。这就是我所拥有的:

var listArray = $("#filter_tag_list lable").map(function(){return $(this).text()})
var listString = listArray.join();

在控制台中,我可以看到listArray包含正确的数组:["test input 1", "test input 2"]。但是我得到了TypeError: Object [object Object] has no method 'join'。请注意,如果我手动创建数组a = ["test input 1", "test input 2"],那么a.join()就可以了。

我没有得到关于listArray的输入???

2 个答案:

答案 0 :(得分:3)

jQuery的map不返回数组,它返回jQuery object。使用.get()将jQuery对象转换为真正的数组:

var listArray = $("#filter_tag_list lable").map(function() {
    return $(this).text();
}).get(); // <----

var listString = listArray.join();

the documentation中列出了这一点:

  

由于返回值是一个包含数组的jQuery对象,因此在结果上调用.get()以使用基本数组是很常见的。

答案 1 :(得分:1)

jQuery map返回一个对象,因此必须先使用toArray转换为数组:

var listArray = $("#filter_tag_list lable").map(function(){return $(this).text()}).toArray();