如何用lodash将数组传输到对象?

时间:2017-02-20 08:39:58

标签: javascript lodash

我有一个如下所示的数组

var arr = [ 'type=A', 'day=45' ];
var trans = { 'type': 'A', 'day': 45 }

请写出最简单,最有效的方式:)

4 个答案:

答案 0 :(得分:0)

您可以拆分字符串并检查值isNaN是否为字符串或取数值。

var array = [ 'type=A', 'day=45', 'bar=0' ],
    object = Object.create(null);

array.forEach(function (a) {
    var p = a.split('=');
    object[p[0]] = isNaN(p[1]) ? p[1] : +p[1];
});

console.log(object);

答案 1 :(得分:0)

  1. 迭代数组中的每个项目
  2. 拆分=
  3. 在键索引
  4. 处向对象添加值

    var arr = [ 'type=A', 'day=45' ];
    var object = {};
    
    for (var i = 0; i < arr.length; i++) {
      var currentItem = arr[i].split('=');
      var key = currentItem[0];
      var value = currentItem[1];
      object[key] = value;
    }
    
    console.log(object);

答案 2 :(得分:0)

使用Array.prototype.reduce()函数的解决方案:

&#13;
&#13;
var arr = [ 'type=A', 'day=45' ],
    trans = arr.reduce(function(r, s){
        var parts = s.split('=');
        r[parts[0]] = isNaN(parts[1]) ? parts[1] : +parts[1];
        return r;
    }, {});

console.log(trans);
&#13;
&#13;
&#13;

答案 3 :(得分:0)

可能有<百万种不同的方式,这种方式使用两种不同的功能。 _.map()调用在每个元素上运行,拆分(和解析)元素(如果它匹配字符正则表达式)。然后它使用Lodash的.fromPairs函数,该函数转换由2个元素数组组成的数组以返回一个对象。

&#13;
&#13;
var arr = ['type=A', 'day=45'];
var obj = _.fromPairs(_.map(arr, function(item) {
  var parts = item.split('=');
  var digits = /^\d+$/;
  if (digits.test(parts[1])) parts[1] = parseInt(parts[1]);
  return parts;
}));
console.log(obj);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
&#13;
&#13;