代码之家  ›  专栏  ›  技术社区  ›  Toby

将数组的每个元素解析为整数

  •  4
  • Toby  · 技术社区  · 15 年前

    我有一个字符串,需要将它拆分成一个数组,然后对数组的每个元素执行数学函数。

    目前我正在做类似的事情。(实际上,我什么也没做,但这是一个很简单的例子来解释我的问题!

    var stringBits = theString.split('/');
    
    var result = parseInt(stringBits[0]) + parseInt(stringBits[3]) / parseInt(stringBits[1]);
    

    我想知道的是,如果有一种方法,我可以将数组的每个元素转换成某种类型,这样我就不必每次都显式地解析它了。

    4 回复  |  直到 8 年前
        1
  •  3
  •   I.devries    15 年前

    您可以通过它进行循环:

    for(var i = 0; i < stringBits.length; i++) {
    
        stringBits[i] = parseInt(stringBits[i]);
    }
    
        2
  •  6
  •   Mihai    8 年前

    更简单的方法是映射到数字对象

    result= stringBits.map(Number); 
    
        3
  •  3
  •   user187291    15 年前

    javascript 1.6.具有MAP() https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array/Map ,这样你就可以做

    intArray = someArray.map(function(e) { return parseInt(e) })
    
        4
  •  -2
  •   user159088    15 年前

    如果在字符串前面添加一个加号(+),则应将其转换为数字。

    例如,这将打印3:

    var x = "1";
    var y = "2";
    alert((+x) + (+y));
    

    但我不确定这是否对所有浏览器都是可移植的。

    您的代码将变为:

    var stringBits = theString.split('/');
    var result = (+stringBits[0]) + (+stringBits[3]) / (+stringBits[1]);
    

    但这只是一个黑客,所以小心使用。

    我认为 parseInt 更好地说明您正在尝试做什么,但是您应该将此职责委托给另一个方法,该方法返回您需要处理的最终数据。转换然后处理,处理时不要转换。您的代码将更易于阅读。