我有一个ajax请求,它返回一个像这样的值列表:
"1,2,3,4,5,6"
我需要它是一个带数字的javascript数组:
[1,2,3,4,5,6]
我试过了:
var array = new Array("1,2,3,4,5,6".split(","))
但数字仍然是输出中的字符串:
["1","2","3","4","5","6"]
有没有一种干净的方法将它作为编号数组?最好不编写函数来迭代它?
答案 0 :(得分:13)
你需要循环并将它们转换为数字,如下所示:
var array = "1,2,3,4,5,6".split(",");
for(var i=0; i<array.length; i++) array[i] = +array[i];
或者,更传统的例子:
var array = "1,2,3,4,5,6".split(",");
for(var i=0; i<array.length; i++) array[i] = parseInt(array[i], 10);
答案 1 :(得分:2)
使用jQuery.map()的更多以jQuery为中心的方法:
var str = "1,2,3,4,5,6";
var arr = $.map(str.split(","), function(el) { return parseInt(el, 10); });
答案 2 :(得分:1)
不确定这是否算作编写函数,但您可以在jquery中使用map函数。我看到你列为标签所以我假设你正在使用:
var stringArray = "1,2,3,4,5,6".split(",");
var numberArray = $.map(stringArray,
function(item, i)
{
return parseInt(item, 10);
});
答案 3 :(得分:1)
// jquery必须有办法完成现代浏览器可以做的事情:
var str= "1,2,3,4,5,6";
var arr= str.split(',').map(Number);
// returns an array of numbers
答案 4 :(得分:0)
如果您信任ajax响应,并且(无论出于何种原因)您承诺不使用循环,则可以始终使用eval
:
var str = "1,2,3,4,5,6";
var array = eval("[" + str + "]");
答案 5 :(得分:0)
如果您不希望显式迭代,可以使用array.map
,javascripts map function。
array.map(callbackFunc, array);
var arr = array.map(function(x) {return parseInt(x);}, "1,2,3,4,5,6".split(","));
http://www.tutorialspoint.com/javascript/array_map.htm
Theres可能是一个更好的参考,但我不是我们javascript足够有一个很好的参考网站。
编辑 - 我看到jQuery有自己的地图,这可能值得研究。