将字符串转换为int数组

问题描述:

我想将"1,2,3"转换为[1,2,3]。 但是,将""转换为数组时存在例外。因为我得到[""]。这对我的情况无效。所以我需要检查它是数字还是字符串。让我们看看代码将字符串转换为int数组

function someWayToParse(some_string) { 
    var final_product = []; 

    var tmp_array = some_string.split(','); 

    //if some_string == "" tmp_array will result [""]; 
    if (tmp_array[0].length===0) 
     return []; 

    for (var item in tmp_array) 
     final_product.push(parseInt(tmp_array[item], 10)); 

    return final_product; 
} 

var stringToParse = "1,2,3"; 

var array_of_ints = someWayToParse(stringToParse); 

我只是寻找在函数中做到这一点的最佳方式,并避免可能的错误。 为了我的好奇,请记住效率高。

+4

这个问题似乎是题外话,因为它是最适合http://codereview.stackexchange.com/ – Satpal

+0

1)检查空字符串第一, 2)用'for..in'停止迭代数组。 – raina77ow

+0

@ raina77ow我同意1)但我想对2)进行一些阐述。不要误会我错不了我只是想知道为什么你错了。 –

它更小的代码将是:

function myConverter(string) { 
    if (!string) return []; 
    return string.split(',').map(Number); 
} 

console.log(myConverter('1,2,3')); 
+0

正如raina77ow所说,我可以在开始时检查空字符串,并使用其余的逻辑。第一次看到这个map()的东西。我会在使用前稍微调整一下,但看起来合法。 –

+0

@MihajloSupic在第二次阅读你的代码后,我意识到你提到了你想要返回的空字符串,所以我将它添加到了我的实现中。 – Tibos

+0

对于像我今天早上不熟悉的地图,请欣赏: [link](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) 谢谢@Tibos。 –