首页 > 解决方案 > 对除第一项之外的数组进行排序。Array.prototype.sort()

问题描述

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)

我目前正在使用这段代码,虽然我相信我可以摆脱firstElement's .shift()并稍后.unshift()通过在array.sort()'s 函数中实现这个逻辑,这样我就不必创建额外的数组。我已经尝试了在这里找到的几个答案,但到目前为止没有一个对我的用例有用。

标签: javascriptarrayssortingoptimizationlogic

解决方案


您可以检查非第一个元素的 sort() 方法:

let array = [{
    name: 'first'
}, {
    name: 'd'
}, {
    name: 'cc'
}, {
    name: 'bbb'
}, {
    name: 'aaaa'
}]

array.sort((a, b) => {
    if (a !== array[0] && b !== array[0]) { // Check if there are not first element
    return b.name.length - a.name.length
    }
})

推荐阅读