首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于特定字段对数组进行排序

基于特定字段对数组进行排序
EN

Stack Overflow用户
提问于 2017-07-19 20:34:14
回答 3查看 68关注 0票数 0

假设我有以下数组

代码语言:javascript
复制
[[['kodak'], 1],
[['It\'s', 'a', 'kodak'. 'moment'], 4],
[['It\'s', 'a', 'kodak'], 3]]

我想按每个内部数组的第二个参数从最小到最大对内部数组进行排序,这样:

代码语言:javascript
复制
[[['It's', 'a', 'kodak'. 'moment'], 4],
[['It's', 'a', 'kodak'], 3],
[['kodak'], 1]];

有什么建议吗?我知道我只能按长度排序,但我确实需要这种格式的数据。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-19 20:39:34

它将始终使用数组的第二个位置进行排序。

代码语言:javascript
复制
const array = [[['kodak'], 1], [['It\'s', 'a', 'kodak', 'moment'], 4], [['It\'s', 'a', 'kodak'], 3]]

const result = array.sort((a, b) => a[1] < b[1])

console.log(result)
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 2
EN

Stack Overflow用户

发布于 2017-07-19 21:47:12

我建议使用一种比较机制,利用Array#sort的比较函数的全部返回值范围,而不是给定的答案。在这种情况下,排序方法需要小于零、零或大于零的值,这反映了数组的项之间的关系。

建议的a[1] < b[1]a[1] > b[1]从不返回值-1。这意味着,简单排序的反转数组不一定等同于使用交换参数排序的数组。

此解决方案采用所需返回值的全部范围,并且如上所述对称地属于这种类型。

代码语言:javascript
复制
var array = [[['kodak'], 1], [['It\'s', 'a', 'kodak', 'moment'], 4], [['It\'s', 'a', 'kodak'], 3]];

array.sort(function (a, b) {
    return b[1] - a[1];
});

console.log(array);

票数 1
EN

Stack Overflow用户

发布于 2017-07-19 20:40:56

代码语言:javascript
复制
var arr = [[['It\'s', 'a', 'kodak', 'moment'], 4],
[['It\'s', 'a', 'kodak'], 3],
[['kodak'], 1]];

arr.sort(function(a, b){
    return a[1]>b[1]
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45190766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档