Lodash将对象添加到已经sorting的Obejct数组中

我正在寻找添加一个对象到已经sorting的对象数组中。 这样新的数组在添加新的对象之后应该被sorting。

这里是我基于对象属性displayName的sorting数组

[ { "id": "06BCCC25", "displayName":"Application" }, { "id": "39F886D9", "displayName":"Communication" }, { "id": "22EA4ED5", "displayName":"Device" }, { "id": "2F6E5FEA", "displayName":"Service" }, { "id": "317BF72C", "displayName":"Service02" } ] 

现在我想补充

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

所以添加后它将被放置在第3和第4个索引之间。

您可以使用_.sortedIndexBy() ,请参阅:

例如,你可以使用:

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

其中array是您的对象数组, value是要插入的新对象, iteratee是每个元素调用的函数,它返回要sorting的值,但也可以是属性名称。

所以在你的情况下这样的事情应该工作:

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

只需将您的数组名称replace为array然后将新的对象replace为value

在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');