2012-07-31 2 views
0

배열은 다음과 같은 결과가 생성 될 수 있다는Node.js를 개체 배열 데이터

A = [ { a: 1, b: 'a' }, { a: 2, b:'b' }, { a: 3, b: 'a' }, { a: 4, b: 'b' } ] 
B = [ { a: 1, c: true }, { a: 2, c: true }, { a: 3, c: false } ] 

은 결합 수와 같은, 노드에 JS 조인 수행하는 임의의 라이브러리 또는 효율적인 기술이 조인 :

# Intersection on a 
C = [ { a: 1, b: 'a', c: true }, { a: 2, b: 'b', c: true }, { a: 3, b: 'a', c: false } ] 

# Union on a 
D = [ { a: 1, b: 'a', c: true }, { a: 2, b: 'b', c: true }, { a: 3, b: 'a', c: false }, { a: 4, b: 'b' } ] 

이 문제에 대한 최선의 해결책은 array.map입니까? 이 생산

+0

당신은 무엇을 시도 했습니까? –

답변

0

에 큰 배열을 처리 할 수 ​​있기 때문에

효율 당신이 확인하고 개체를 병합하는 방법에 대한 매우 구체적인 아니에요, 여기에 가장 중요하다. 밑줄을 사용하여

, 그 결과는 다음과 같이 얻을 수 있습니다

_u=require("underscore") 
A = [ { a: 1, b: 'a' }, { a: 2, b:'b' }, { a: 3, b: 'a' }, { a: 4, b: 'b' } ] 
B = [ { a: 1, c: true }, { a: 2, c: true }, { a: 3, c: false } ] 

D = _u.zip(A,B).map( 
     function(x){ 
     return _u.extend(x[0],x[1]); 
     } 
    ); 

C = _u.zip(A,B).filter(
     function(x){ 
     return !!x[1]; 
     } 
    ).map(
     function(x){ 
     return _u.extend(x[0],x[1]); 
     } 
    ); 

은 당신이 찾고있는 무엇인가요?