我想得到这样的最终结果:
emails: Array[4]
0: "Athos"
1: "Aramis"
2: "Porthos"
3: "D'Artagnan"
length: 4
但是,当我像这样使用$.makeArray
时:
$.makeArray( names );
这就是我得到的:
emails: Array[1]
0: "Athos, Aramis, Porthos, D'Artagnan"
length: 1
var names
来自textarea值:$("textarea").val()
我应该使用push
还是别的?或者我对$.makeArray
做错了什么?
答案 0 :(得分:2)
$.makeArray
将
您似乎正在将字符串"Athos, Aramis, Porthos, D'Artagnan"
传递给makeArray
。字符串不类似于数组,因此jQuery将无法对其执行任何操作,因此,它只是创建一个包含单个字符串的数组。 makeArray
不是正确的功能。
相反,使用String.split将字符串分解为数组。
var str = "Athos, Aramis, Porthos, D'Artagnan";
var values = str.split(",")
console.log(values) // ["Athos", " Aramis", " Porthos", " D'Artagnan"]
请注意,您仍会在数组中的字符串中有前导空格。您可能有兴趣通过更新split
以使用与空格匹配的正则表达式来修剪这些内容。
var values = str.split(/\s*[,]\s*/g)
console.log(values) // ["Athos", "Aramis", "Porthos", "D'Artagnan"]
答案 1 :(得分:0)
好的,$.makeArray()
不是为此而做的。这实际上将jquery节点数组转换为普通数组。
就像你选择节点$("p")
一样,它就像在jQuerified数组中一样,并且你想要将这个数组转换为普通数组。然后你可以使用$.makeArray()
;
对于你当前的问题,你shpuld喜欢:
$(function(){
var val = $.trim($("textarea").val()).replace("/\s/gi", "").split(",");
console.log(val);
});
这里是jsfiddle:http://jsfiddle.net/ashishanexpert/yQXzR/