2

就像我一样var arr = [1,2,3,4,5],我希望它变成这样arr["1","2","3","4","5"]。我尝试使用:

var x = arr[0].toString(); //outputs "1"

但是当我这样做时,typeof x它会输出“数字”。

我怎样才能将它转换为当我这样做时typeof它会输出“字符串”?

4

5 回答 5

4

最优雅的解决方案

arr = arr.map(String);

这适用于Boolean并且Number也适用。引用 MDN(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String

字符串文字(用双引号或单引号表示)和从非构造函数上下文中的 String 调用返回的字符串(即,不使用 new 关键字)是原始字符串。

至于 VisioNs 的回答,这只适用于支持的浏览器Array.prototype.map

于 2013-05-31T09:51:05.403 回答
3

一种方法是使用Array.prototype.map()

var arrOfStrings = arr.map(function(e) { return e + ""; });

检查浏览器兼容性并在需要时使用 shim

于 2013-05-31T09:28:35.757 回答
1

您还可以使用:

arr.join().split(',');
于 2013-05-31T11:11:33.653 回答
1

这样做可能是一种更优雅的方式,但您可以循环数组并将每个值转换为字符串,方法是将其添加到空白字符串+=""中。在这里检查javascript 类型转换

var arr = [1, 2, 3, 4];
for(var i=0;i<arr.length;i++) arr[i]+="";
alert(typeof arr[0]) //String
于 2013-05-31T09:32:47.297 回答
0

你也可以这样做:LIVE DEMO(如果你想使用.toString()

var arr = [1, 2, 3, 4];

var i = 0;
arr.forEach(function(val) {
    arr[i] = val.toString();
    console.log(typeof(arr[i]));
    i++;
});
于 2013-05-31T09:40:44.267 回答