javascript - 对除第一项之外的数组进行排序。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 函数中实现这个逻辑,这样我就不必创建额外的数组。我已经尝试了在这里找到的几个答案,但到目前为止没有一个对我的用例有用。
解决方案
您可以检查非第一个元素的 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
}
})
推荐阅读
- javascript - 带有php的html动态名称
- wordpress - Word Press 自定义查询分页不起作用
- c# - 列表中麦克风输入的最大值错误c#
- c# - 为什么在尝试更新数据库时出现语法错误?
- json - vba json读取子数组怎么读
- android-fragments - 恢复片段内的 RecyclerView 滚动位置
- python - “ValueError:在 rpy2 中提取空值时,代码需要介于 -1 和 len(categories)-1 之间”
- keras - keras ,不兼容的形状:[64] 与 [64,280]
- c# - 无法让这个简单的 ASP.NET 教程代码运行
- javascript - 在for循环中显示计数器的正确javascript是什么