0

ノード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 } ]

次の結果が得られるように結合できます。

# 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 はこの問題に対する最善の解決策ですか?

本番環境では巨大な配列を処理する可能性があるため、ここでは効率が最も重要です

4

1 に答える 1

0

オブジェクトを識別してマージする方法についてはあまり具体的ではありません。

Underscore を使用すると、結果は次のように取得できます。

_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]);
      }
    );

それはあなたが探しているものですか?

于 2012-07-31T15:25:31.080 に答える