2016-05-21 65 views
2

lodash.jsを使用して重複アイテムを削除しようとしていますが、正しく動作させることができません。lodash.jsでオブジェクト配列の重複アイテムを削除します

これは、配列内のオブジェクトの構造である:

{ 
    label: 'tagA', 
    value: 1 
} 

だから私はこの配列を持っているとしましょう:

var objectsArray = [ 
    { 
    label: 'tagA', 
    value: 1 
    }, 
    { 
    label: 'tagB', 
    value: 2 
    }, 
    { 
    label: 'tagC', 
    value: 3 
    }, 
    { 
    label: 'tagB', 
    value: 4 
    }, 
    { 
    label: 'tagB', 
    value: 5 
    }, 
]; 

私はlodash.jsから_.uniqBy()機能でコードのこの作品を作りました同じラベルの配列の要素を削除しようとすると、期待どおりに機能しません。

var uniq = _.uniqBy(objectsArray, function(o){ 
     return o.label; 
    }); 

私はいくつかのサンプルに基づいて、こことそこにlod​​ashのドキュメントが見つかりましたが、私はこの点で知識が不足していますので、スーパーの感謝を助けるでしょう。

ありがとうございました。

+0

*期待どおりに動作しません。*動作する方法はどのように期待できますか?どのように動作しますか? –

答えて

5

あなたは正しい、ネーミング・を使用していることを確認し、そのコードは私の作品:

var arr = [ 
       { 
        label: 'tagA', 
        value: 1 
       }, 
       { 
        label: 'tagB', 
        value: 2 
       }, 
       { 
        label: 'tagC', 
        value: 3 
       }, 
       { 
        label: 'tagB', 
        value: 4 
       }, 
       { 
        label: 'tagB', 
        value: 5 
       }, 
       ]; 

    var uniq = _.uniqBy(arr, function(o){ 
     return o.label; 
    }); 

    console.log(uniq); // >> Returned an array with first 3 objects from array arr 
+1

したがって、OPコードの問題は何ですか? –

+0

私は彼が最初の '.uniqBy()'引数 – vicodin

+0

の配列名を見落としたと思います。いいえ、彼は 'objectsArray'を渡しました。 –

0

私は2番目の例では、uniqBy必要なものだけだと思う​​:

// The `_.property` iteratee shorthand. 
_.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); 
// → [{ 'x': 1 }, { 'x': 2 }] 
+0

あなたの努力に感謝します。本当に感謝しています。 – Yonirt

0

あなたが確認するにはあなたは使用できますuniqWith();

これは私のために働きます

var data = [ 
    { 
    label: 'tagA', 
    value: 1 
    }, 
    { 
    label: 'tagB', 
    value: 2 
    }, 
    { 
    label: 'tagC', 
    value: 3 
    }, 
    { 
    label: 'tagB', 
    value: 4 
    }, 
    { 
    label: 'tagB', 
    value: 5 
    }, 
]; 

var filtered = _.uniqWith(data, function(first, second){ 

    return first.label === second.label 
}); 
関連する問題