2013-04-13 19 views
0

我喜欢转换由一个串给定的类型,因为我想一串数字转换为数字的阵列给出。转换目的是通过键入字符串或typeof运算(数[])

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(数字[])

更新: 我认为这里是一个误解。我不知道哪种类型会传递给我的函数。我需要类型检查,或通过输入字符串信息进行转换。而且在javascript中没有办法做到这一点,因为没有类型的arrayOfStrings只有一个数组。但我可以做一个帮手功能来手动做到这一点。

+0

不知道你想问什么,但如果你做''0,0,0'.split(',')'实际上会给你一个数组''“0”,“0”, “0”]'。 – Rishabh

+0

@Rishabh我有一个字符串,它需要是一个数组而不是一个字符串数组。 –

+0

您需要澄清2件事: *您是否期望在数组中始终有数字,或者您是否需要过滤错误(空插槽,文本)? * Ints或花车? – tomByrer

回答

0

基于您的评论,你可以(为.map没有.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 

您可以轻松地在此展开例如添加类型甚至错误检查。

祝你好运!

+0

你测试过了吗? –

+0

@杰克:*谢谢你的恩惠*。我上个月从小写字母l转换为大写字母L,并且错过了最后一个字母l。更新了答案。是的,经过测试。 – GitaarLAB

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] 

希望有帮助!

+1

确定OP仅期望Ints,而不是浮动? – tomByrer

+0

请注意,阵列上的原型图是新的ES5,因此根本不符合浏览器。另外,垫片所需的相当大。 – GitaarLAB

+0

@GitaarLAB我们不能都住在过去:)而且,垫片可以做得很小。 –

相关问题