我有一个对象数组,我需要转换为单个对象。 例如:需要转换
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]转换为属性值 感谢
答案 0 :(得分:6)
不使用LoDash,而是使用直接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;
},{});
答案 1 :(得分:1)
在lodash 4.15上,
_.chain(data).keyBy("name").mapValues("value").value()
在lodash 3.10上,
_.chain(data).indexBy("name").mapValues("value").value()
答案 2 :(得分:0)
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
})