繁体   English   中英

使用lodash将对象数组转换为对象

[英]Convert array of objects to object using lodash

我有一个需要转换为单个对象的对象数组。 例如:需要转换

var data=[
  {
    "name": "EMPRESA",
    "value": "CMIP"
  },
  {
    "name": "DSP_DIRECAO",
    "value": "CMIP@040@1900-01-01"
  },
  {
    "name": "DSP_DEPT",
    "value": "CMIP@040@1900-01-01@42@1900-01-01"
  },

...]

   {
    "EMPRESA": "CLCA",
    "DSP_DIRECAO": "CLCA@100@1900-01-01",
    "DSP_DEPT": "CLCA@100@1900-01-01@100@1900-01-01",
    ...
  }

将data [x] [name]转换为属性,并将data [x] [value]转换为值,谢谢

不使用LoDash,而是直接使用reduce reduce()

var obj = data.reduce( (a,b) => {
    return a[b.name] = b.value, a;
}, {});

 var data=[ { "name": "EMPRESA", "value": "CMIP" }, { "name": "DSP_DIRECAO", "value": "CMIP@040@1900-01-01" }, { "name": "DSP_DEPT", "value": "CMIP@040@1900-01-01@42@1900-01-01" } ] var obj = data.reduce( (a,b) => { return a[b.name] = b.value, a; }, {}); console.log(obj); 

在LoDash中做同样的事情就像

var obj = _.transform(data, (a,b) => {
    return a[b.name] = b.value, a;
},{});

在lodash 4.15上,

_.chain(data).keyBy("name").mapValues("value").value()

在lodash 3.10上,

_.chain(data).indexBy("name").mapValues("value").value()
var newObj = {}
var data = [{
    "name": "EMPRESA",
    "value": "CMIP"
}, {
    "name": "DSP_DIRECAO",
    "value": "CMIP@040@1900-01-01"
}, {
    "name": "DSP_DEPT",
    "value": "CMIP@040@1900-01-01@42@1900-01-01"
}]
data.forEach(function(d) {
    newObj[d.name] = d.value
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM