【问题标题】:converting array to different types (lodash/js)将数组转换为不同的类型(lodash/js)
【发布时间】:2016-09-17 19:43:41
【问题描述】:

逐一转换数组中每个元素的类型的最直接方法是什么?

例如,如果我有:

var a = ["2013", "72", "68", "76", "75", "76", "73"]

如何将a 转换为以下内容,将第一项保留为字符串并将其余项转换为整数:

["2013", 72, 68, 76, 75, 76, 73]

在 lodash 中,我可以管理 _.map(_.values(record), _.toNumber) 将整个数组转换为数字,但我将如何映射到数组中的每个项目?

【问题讨论】:

  • 您希望将 2013 保留为字符串但将其他转换为数字的规则是什么?

标签: javascript arrays type-conversion lodash


【解决方案1】:

Array#map 与循环的索引一起使用。

var a = ["2013", "72", "68", "76", "75", "76", "73"];
		
a = a.map(function (b, i) {
    return i ? Number(b) : b;
});

console.log(a);

【讨论】:

  • @Yosvel Quintero 不,a 变量声明应该以逗号结尾,它确实如此。
  • @Redu,我改了逗号。这是剩下的。
【解决方案2】:

使用 lodash 方法 maptoNumber 并检查不是数组中的第一个:

var a = ["2013", "72", "68", "76", "75", "76", "73"];
var result = _.map(a, function(v) {
    return a[0] !== v ? _.toNumber(v) : v;
});
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.12.0/lodash.min.js"></script>

【讨论】:

    【解决方案3】:

    可能是这样的:

    var a = ["2013", "72", "68", "76", "75", "76", "73"]
    var newArray = [];
    a.map(function(d, i) {
      if (i == 0) {
        newArray.push(d)
      } else {
        newArray.push(parseInt(d, 10))
      }
      return newArray
    
    })
    console.log(newArray)

    【讨论】:

      【解决方案4】:

      var a = ["2013", "72", "68", "76", "75", "76", "73"]
      var b = a.map(function(item) {
        if (item.length === 4) {
          return item;
        } else {
          return parseInt(item, 10);
        }
      });
      console.log(b)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-27
        • 2010-11-26
        • 1970-01-01
        • 2017-01-11
        • 1970-01-01
        • 2013-05-01
        • 2013-03-28
        • 1970-01-01
        相关资源
        最近更新 更多