2017-03-27 45 views
1

我正在尋找將對象添加到已排序的對象數組中。所以新數組應該在添加新對象後排序。Lodash將對象添加到已排序的Obejct數組

這裏是我的有序陣列基於對象屬性DisplayName

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

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

] 

現在我想將它放在第三和第四之間的索引之後所以要加

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

    } 

回答

4

您可以使用_.sortedIndexBy()爲,見:

例如,你可以使用:

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

其中array是你的對象的數組,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');