0

我喜欢转换由字符串给出的类型,因为我想将一串数字转换为一个数字数组。

var myStringType = "number[]";
var myString = "0, 0, 0";

var myStringArray = myString.Split(","); <- these array need to be a array;
var myNumbersArray = ConvertToAnyByString(myStringArray, myStringType);

如果上述方法不可行,我可以通过知道类型进行转换。是否有类似与 typeof(number[]) 比较的东西

更新:我认为这是一个误解。我不知道哪种类型会传递给我的函数。我需要类型检查或通过字符串信息将其转换为哪种类型。并且没有办法在 javascript 中原生地做到这一点,因为没有 arrayOfStrings 类型,只有一个数组。但我可以制作一个辅助函数来手动执行此操作。

4

2 回答 2

2

好的。尝试这个 -

var str = '0,0,0';
var arr = str.split(','); // ['0', '0', '0']
var int_arr = arr.map(function(el) {return parseInt(el, 10);}); // [0, 0, 0]

希望有帮助!

于 2013-04-13T03:21:10.303 回答
0

根据您的评论,您可以执行以下操作(没有.map或 shim for .map):

var str = '0,1,8';
var arr = str.split(','), L=arr.length;
          while(L--){arr[L]=Number(arr[L]);}
//now arr contains numbers.

Number(arr[L]);是“有效负载”,但您也可以使用(取决于您需要什么):
parseInt(arr[L]);或者parseFloat(arr[L]);甚至arr[L]*1;只是+arr[L];
作为有效负载。它只是让你的船漂浮的东西。

测试:alert(typeof arr[1]); // number


但要真正回答您最初提出的问题(将数组中的值转换为由字符串指定的不同类型),我提供了这个简单的示例来说明如何做到这一点:

var convertArrToAnyByString = function(arr,converTo,rad){
   var L = arr.length;
   rad = rad||10;  // optional, defaults to 10 as radix
   switch(converTo){
     case 'number':
        while(L--){arr[L] = Number(arr[L]);}
        break;
     case 'string':
        while(L--){arr[L] = arr[L].toString(rad);}
        break;
     default:
        arr=false;
   }
   return arr;
};

var str = '0,1,8';
var arr = str.split(','); 

// testing:
alert(typeof arr[1]);  //arr[1] should be string by default
arr=convertArrToAnyByString(arr,'number');
alert(typeof arr[1]);  // number
arr=convertArrToAnyByString(arr,'string');
alert(typeof arr[1]);  // string again
alert(arr[2]);         // still 8

您可以通过添加类型甚至错误检查来轻松扩展此示例。

祝你好运!

于 2013-04-13T03:34:11.273 回答