Javascript 使用lodash将JSON对象数组转换为哈希映射
我需要转换Javascript 使用lodash将JSON对象数组转换为哈希映射,javascript,json,lodash,Javascript,Json,Lodash,我需要转换 var data = [ { rel: 'links-A', href: 'url1', id: 0}, { rel: 'links-A', href: 'url2', id: 1}, { rel: 'links-B', href: 'url3', id: 2}, { rel: 'links-B', href: 'url4', id: 3}, ]; 到如下所示的哈希映射: var converted = { linksA: [ {href: 'url1', id:
var data = [
{ rel: 'links-A', href: 'url1', id: 0},
{ rel: 'links-A', href: 'url2', id: 1},
{ rel: 'links-B', href: 'url3', id: 2},
{ rel: 'links-B', href: 'url4', id: 3},
];
到如下所示的哈希映射:
var converted = {
linksA: [
{href: 'url1', id: 0},
{href: 'url2', id: 1}
],
linksB: [
{href: 'url3', id: 2},
{href: 'url4', id: 3}
],
}
不确定使用lodash是否可行如果您不想,甚至不必使用lodash。
.reduce
数组方法应足够:
var数据=[
{rel:'links-A',href:'url1',id:0},
{rel:'links-A',href:'url2',id:1},
{rel:'links-B',href:'url3',id:2},
{rel:'links-B',href:'url4',id:3},
]
var转换=数据减少((最终,当前)=>{
var newKey=current.rel.replace(“-”,”);
如果(!final[newKey])final[newKey]=[];
final[newKey].push({href:current.href,id:current.id});
返回最终结果;
}, {})
log(已转换)
如果您不想使用lodash,您甚至不必使用它。.reduce
数组方法应足够:
var数据=[
{rel:'links-A',href:'url1',id:0},
{rel:'links-A',href:'url2',id:1},
{rel:'links-B',href:'url3',id:2},
{rel:'links-B',href:'url4',id:3},
]
var转换=数据减少((最终,当前)=>{
var newKey=current.rel.replace(“-”,”);
如果(!final[newKey])final[newKey]=[];
final[newKey].push({href:current.href,id:current.id});
返回最终结果;
}, {})
console.log(已转换)
首先rel,然后映射键,使用以删除连字符:
var converted = _(data)
.groupBy('rel')
.mapKeys( (v, k) => k.replace('-', ''))
.value();
首先rel,然后使用在键之间映射以删除连字符:
var converted = _(data)
.groupBy('rel')
.mapKeys( (v, k) => k.replace('-', ''))
.value();
必须删除属性名称中的
-
?如果不能使用。.groupBy(数据,'rel')
必须删除属性名称中的-
?如果没有,则可以使用.groupBy(数据,'rel')