【发布时间】:2021-08-26 07:50:41
【问题描述】:
let array = [{
name: 'first'
}, {
name: 'd'
}, {
name: 'cc'
}, {
name: 'bbb'
}, {
name: 'aaaa'
}]
let firstElement = array.shift()
// sort array by item name's length:
array.sort((a, b) => {
return b.name.length - a.name.length
})
array.unshift(firstElement)
console.log(array)
我目前正在使用此代码,尽管我相信我可以通过在 array.sort() 的函数中实现此逻辑来摆脱 firstElement's .shift() 和稍后的 .unshift(),这样我就不必创建一个额外的数组。我已经尝试了在这里找到的几个答案,但到目前为止没有一个对我的用例有用。
【问题讨论】:
-
您可能可以,但是对于所有正常用例,性能差异可能可以忽略不计。除非您要处理该数组中的大量数据,否则我真的不会打扰并专注于其他事情。
-
@georg 顺便说一句,这仍然会创建两个新数组,一个用于
.slice(1),一个用于外部数组,因此它并不比 OP 已有的更好。我可能也会这样做,但只是为了可读性,而不是出于性能原因。
标签: javascript arrays sorting optimization logic