2016-05-11 6 views
0

重複したデータの必要性を排除しようとすると、この問題が発生します。1つのオブジェクトにjavascriptオブジェクト(プロパティ+値)をマージする

私はオブジェクトのリストを持っていると言います。私は特定のカテゴリに基づいてそれらを分離しています。そして、2つのオブジェクトは、Open 'category'内の同じデータを返します。私は必ずしもデータを削除したくないので、マージ/結合が最善の方法だと思いますか?

カテゴリOpenの場合は、すべてのオブジェクトをマージします。どのようにオブジェクトをマージできますか?私は.concat()は配列のためのものだと思う。これも可能ですか?

... 

Open 
------ 
const dupObjects = this.props.response.flight['open']; 
// returns objects that look like this... 

Object {delta: Array[1], lambda: Array[0], amount: } 
Object {delta: Array[1], lambda: Array[0], amount: 200,000} // duplicate lets combine 
Object {delta: Array[1], lambda: Array[0], amount: 200,000} // duplicate lets combine 



if (category == 'Open'){ 
    // merge objects 
    const dupObjects = this.props.response.flight['open']; 
} 

予想される出力:

Open: 
Delta : Information... Lambda: Information... Amount: $0 
Delta : Information... Lambda: Information... Amount: $200,000 
+1

マージを定義してください...あなただけの重複排除、または別のものを拡張したいですか? –

+0

@DMosesは完全にはわからないtbh。しかし、それらの用語で簡単にGoogle検索した後、私は重複を除いていると思いますか? – Modelesq

+0

これは興味があるかもしれません:http://stackoverflow.com/questions/171251/how-can-i-merge-properties-of-two-javascript-objects-dynamically –

答えて

1

あなたが求めているものは、あなたが深い等しいを使用して、同じ値を持つものとして、重複を定義する重複オブジェクトを削除することです。 http://underscorejs.org/#isEqualを参照してください。以下は、リストを重複排除するサンプルスクリプトです。それは非常にエレガントではないが、それは動作します:

var objects = [ 
 
    {"delta":["St.Louis"],"lambda":[],"amount":200000}, 
 
    {"delta":["St.Louis"],"lambda":[],"amount":200000}, 
 
    {"delta":["Different"],"lambda":[],"amount":200000} 
 
]; 
 

 
var dedupedList = _.reduce(objects, 
 
function(result, item) { 
 
    var isDupe = _.any(result, function(anyItem) { return _.isEqual(item, anyItem); }); 
 
    if (!isDupe) result.push(item); 
 
    return result; 
 
}, 
 
[]); 
 

 
console.log(dedupedList);
<script src="//jashkenas.github.io/underscore/underscore-min.js"></script>

+0

私は本当に答えに感謝します。残念ながら私はアンダースコアを使用できません。 dupObjectsは各javascriptオブジェクトを返すので、文字通り2を組み合わせるか、この時点で重複を無視/削除します。私がreactjsチャンネル内に投稿すると、それが私を助けるかどうかはわかりません。 – Modelesq

+0

私はreactjsに精通していません。しかし、概念的には、私が提供したものはうまくいくはずです。深い等しさを持つ独自のdedupeCollection関数を作成し、すでに存在するものを削除することができます。 –

+0

アレイ用に.pushではありませんか? – Modelesq

関連する問題