【问题标题】:Parsing every element of an array as an integer将数组的每个元素解析为整数
【发布时间】:2009-11-20 10:39:31
【问题描述】:

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

目前我正在做这样的事情。 (实际上,我并没有这样做,但这是一个非常简单的例子来解释我的问题!

var stringBits = theString.split('/');

var result = parseInt(stringBits[0]) + parseInt(stringBits[3]) / parseInt(stringBits[1]);

我想知道的是,是否有一种方法可以将数组的每个元素转换为某种类型,从而避免我每次都必须显式解析它。

【问题讨论】:

    标签: javascript arrays parsing


    【解决方案1】:

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

    result= stringBits.map(Number); 
    

    【讨论】:

    • 这应该被标记为答案。并不是说其他​​答案不正确,而是这种简单性是天才。
    • 它也是最新的(ES6)
    【解决方案2】:

    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) })
    

    【讨论】:

      【解决方案3】:

      你可以循环遍历它:

      for(var i = 0; i < stringBits.length; i++) {
      
          stringBits[i] = parseInt(stringBits[i]);
      }
      

      【讨论】:

      • 我想尽可能避免这样做,这似乎是一个不必要的循环,而实际上它所做的只是让我的代码更简洁一些。
      • 在 JS 中,循环是对数组的每个条目进行处理的唯一方法。
      • 如果您只想让代码更简洁一些,您可以提供一种方法(例如 extractIntsFromString),将您的字符串转换为整数数组。然后使用整数数组的元素进行计算。一旦类型转换不碍事,您就可以专注于更简洁的代码,现在只执行数学函数。
      【解决方案4】:
      ["1","2"].map(Number)
      result: [1,2]
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
      • 请参阅stackoverflow.com/help/how-to-answer,了解如何提供令人满意的答案。
      【解决方案5】:

      如果您在字符串前面添加加号 (+),则它们应转换为数字。

      例如,这将打印 3:

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

      但我不确定这是否适用于所有浏览器。

      您的代码将变为:

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

      但这只是一个 hack,所以要小心使用。

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

      【讨论】:

      • 什么?!?!?天哪!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-27
      • 2015-11-14
      • 1970-01-01
      相关资源
      最近更新 更多