【问题标题】:Is there a JS function which sorts a list by a function value [duplicate]是否有一个JS函数可以按函数值对列表进行排序[重复]
【发布时间】:2020-11-03 02:55:50
【问题描述】:

我想按列表的第 0 个索引对列表进行排序。

在 Python 中,这看起来像

l = [[1, 0], [5, 1], [6, 2], [3, 2]

l.sort(key=lambda x: x[0])
#l is now [[1, 0], [3, 2], [5, 1], [6, 1]]

这在 Javascript 中会是什么样子?

【问题讨论】:

  • l.sort((a, b) => a[0] - b[0])
  • javascript中没有直接比较的方法,但是可以定义自定义排序函数,手动比较每个集合的第一个元素

标签: javascript sorting


【解决方案1】:

数组排序方法做同样的工作:

const arr = [[1, 0], [5, 1], [6, 2], [3, 2]];
arr.sort((a,b) => a[0] - b[0]);
console.log(arr);

【讨论】:

    【解决方案2】:

    你可以创建一个函数来获取排序值。

    let l = [[1, 0], [5, 1], [6, 2], [3, 2]],
        fn = x => x[0],
        sort = fn => (a, b) => fn(a) - fn(b);
    
    l.sort(sort(fn));
        
    l.forEach(a => console.log(...a));

    【讨论】:

      猜你喜欢
      • 2020-06-30
      • 1970-01-01
      • 2011-10-31
      • 2019-10-05
      • 2017-08-28
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多