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