2017-03-27 8 views
1

オブジェクトを既にソートされたオブジェクトの配列に追加することを探しています。新しいオブジェクトを追加した後、新しい配列をソートする必要があります。Lodashすでにソートされているオブジェクトにオブジェクトを追加する

はここに今、私はそれが3番目と4番目のインデックスの間に配置されます追加した後

{ 
    "id": "07BSSC25", 
    "displayName":"Mail" 

    } 

を追加するオブジェクトのプロパティのdisplayName

[ 
    { 
    "id": "06BCCC25", 
    "displayName":"Application" 

    }, 
    { 
    "id": "39F886D9", 
    "displayName":"Communication" 
    }, 
    { 
    "id": "22EA4ED5", 
    "displayName":"Device" 
    }, 
    { 
    "id": "2F6E5FEA", 
    "displayName":"Service" 
    }, 
    { 
    "id": "317BF72C", "displayName":"Service02" 
    } 

] 

に基づいて私のソートされた配列です。

あなたが見、そのために _.sortedIndexBy()を使用することができます

答えて

4

は、たとえば、あなたが使用することができますarrayは、オブジェクトのあなたの配列です

array.splice(_.sortedIndexBy(array, value, iteratee), 0, value); 

valueがあります挿入する新しいオブジェクトとiterateeは、要素ごとに呼び出される関数です。ソートする値を返しますが、プロパティ名にすることもできます。

だからあなたの場合にはこのような何かが動作するはずです:

array.splice(_.sortedIndexBy(array, value, 'displayName'), 0, value); 

だけarrayvalueのための新しいオブジェクトのためのあなたの配列名に置き換えてください。

を参照してくださいそれが説明されているGitHubの上でも、この問題:あなたはそれに多く使用する場合には、例えば、lodash機能が追加される場合があります

_.insertSorted = (a, v) => a.splice(_.sortedIndex(a, v), 0, v); 
_.insertSortedBy = (a, v, i) => a.splice(_.sortedIndexBy(a, v, i), 0, v); 

お使いのケースでは、

_.insertSorted(array, value, 'displayName'); 
関連する問題