我有一个对象数组:
[
{ id: 'ade', value: 8 },
{ id: 'rtl', value: 17 },
{ id: 'enu', value: 11 }
]
并希望将其转换为:
[
{ id: 'enu', value: 11 },
{ id: 'rtl', value: 17 },
{ id: 'ade', value: 8 },
]
但我不能反转它等等,因为我必须设置一个语句来表示该项 { id: 'ade', value: 8 }
应为最后一项,其余项必须按id排序。
我试图用第二个数组减少第一个数组和concat
const firstArr = arr.reduce((acc, cv) => {
if (cv.id === 'ade') {
acc.push(cv)
}
return acc
}, []))
const second = arr.splice(firstArr, 1).sort()
firstArr.concat(second)
但它失败了,似乎过于工程化了。我想做得更聪明些。有什么想法吗?
请考虑任何建议!!
5条答案
按热度按时间b5lpy0ml1#
您可以使用spread运算符使代码看起来更短,但其逻辑相同:
因此,第一部分是所有数组元素,没有最后需要的特定元素,第二部分是最后一个元素。
希望我能帮忙:)
zbsbpyhn2#
如果只是反转数组,请尝试使用
array.reverse
或array.map
带索引。1wnzp6jl3#
你可以用
Array.prototype.localeCompare
为了你的案子4dbbbstv4#
对于这种特殊情况,您可以使用自定义
sort
功能:但是如果在
arr
将有更多的对象需要重构排序函数9cbw7uwe5#