Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用lodash将JSON对象数组转换为哈希映射_Javascript_Json_Lodash - Fatal编程技术网

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')