2015-01-28 1 views
-1

나는 mongodb의 두 배열을 가지고 있고 그들을 병합하고 싶다.두 개의 배열이 하나로 합쳐졌습니다. 속성을 합산하는 동안 노드가있는

그들은 다음과 같이 :

a=[{country: 'de', count: 7},{country: 'es', count: 1}] 
b=[{country: 'de', count: 2}, {country: 'us', count: 3}] 

그리고 내가 필요한 것은 이것이다 :

c=[{country: 'de', count: 9},{country: 'us', count: 3},{country: 'es', count: 1}] 

nodejs로 이러한 목표를 달성하기 위해 가능한 모든 키 쌍을 반복하지 않고 스마트 방법이 있나요?

는 (나는 "의는"많은 그것을 할 수 있지만 코드 사촌 후 그들 중 많은 많은 많은 것이다 것을 피하려고.)

감사합니다 많이!

답변

1

약간의 임시 방면이지만, 이것이 내가하는 방법입니다.

a = [{country: 'de', count: 7}, {country: 'es', count: 1}] 
b = [{country: 'de', count: 2}, {country: 'us', count: 3}] 

temp = {} 
c = [] 

merger = function (entry) { 
    key = entry.country 

    if (typeof temp[key] == 'undefined') 
     temp[key] = 0 

    temp[key] += entry.count 
} 

a.forEach(merger) 
b.forEach(merger) 

for (country in temp) { 
    c.push({ country: country, count: temp[country] }) 
} 

저는 이것을 노드의 REPL에서 테스트했습니다. c.forEach(merger) 등으로 더 많은 배열로 확장 할 수 있습니다.

+0

고마워요! 내 데이터로 해봤는데 완벽하게 작동합니다. – Nick

관련 문제