2017-11-30 9 views
0
나는이 같은 해시 맵에

변환 배열은 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: 0}, 
     {href: 'url2', id: 1} 
       ], 
linksB: [ 
     {href: 'url3', id: 2}, 
     {href: 'url4', id: 3} 
     ], 
} 

확실하지가 lodash로 해 드리겠습니다 경우

+1

당신은 제거해야'-' 속성 이름에? '_.groupBy (data, 'rel')'를 사용할 수 없다면 – charlietfl

답변

1

당신에게 당신이 원하지 않는다면 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 = data.reduce((final, current) => { 
 
    var newKey = current.rel.replace("-", ""); 
 
    if (!final[newKey]) final[newKey] = []; 
 
    final[newKey].push({href: current.href, id: current.id}); 
 
    return final; 
 
}, {}) 
 

 
console.log(converted)

2

먼저 groupBy 확인해 다음 하이픈을 제거 mapKeys를 사용하여 키를 통해지도 : :이 .reduce 배열 방법은 충분해야

var converted = _(data) 
    .groupBy('rel') 
    .mapKeys((v, k) => k.replace('-', '')) 
    .value(); 
+0

이것은 매우 잘 작동했습니다. –