Lodash 从集合中创建一个对象

Lodash create an object from a collection

用下面的数组;

var arr = [
    {"name": "blah"},
    {"version": "v1.0.0"},
    ...
]

我想用 lodash;

创建以下对象
var obj = {
    "name": "blah",
    "version": "v1.0.0",
    ...
}

P.S. 重复并不重要,因为这里不会有。

既然可以在纯 js 中完成,为什么还要使用 lodash?

var arr = [
  {
    "name": "blah"
  }, 
  {
    "version": "v1.0.0"
  }
]

var obj = arr.reduce(function(acc, val) {
  var key = Object.keys(val)[0];
  acc[key] = val[key];
  return acc;
}, {})

console.log(obj)

这是一个使用普通 JavaScript 的解决方案。

参考文献:

  1. Object.assign可用于连接Objects({}).
  2. Array.prototype.reduce 可用于最小化 Array([]) 值。

var arr = [{
  "name": "blah"
}, {
  "version": "v1.0.0"
}];

var obj = arr.reduce(function(o, v) {
  return Object.assign(o, v);
}, {});

console.log(obj);

Lodash 实现。

var arr = [{
  "name": "name"
}, {
  "version": "v1.0.0"
},{
  "manager": "manager"
}];

var result = _.reduce(arr, function(object, value) {
  return _.assign(object, value);
}, {});

console.log(result);