如何通过机制实现排序?

时间:2018-02-13 13:26:02

标签: typescript currying arrow-functions

array.sort()正在使用一个返回数字的函数。所以通常是这样的

result = pd.DataFrame(X_train_sam)
result.columns = train_1.columns
好吧,我想拥有的是:

myArray.sort((item1, item2) => a < b);

所以:

  • 我有一个参数,它是一个从任何
  • 返回数字的函数
  • 我返回一个有2个参数的函数(要比较的参数)并返回一个数字
  • 此函数比较2个结果

它应该看起来像这样...不幸的是我不能用各种方法来工作。

myArray.sort(by(obj => obj.id))
我在正确的轨道上吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

是的,几乎没问题,我也会让它变得通用以获得额外的类型安全性:

const by = <T>(getter: (v: T) => number) => (x :T, y :T) => {
    var xValue = getter(x);
    var yValue = getter(y);

    if (xValue > yValue)
        return 1;
    else if (xValue < yValue)
        return -1;
    else return 0;
}
let myArray = [
    { id : 1 },
    { id : 5 },
    { id : 3 },
    { id : 2 },
]
myArray.sort(by(o=> o.id)); // o is inferred to { id: number }, which should be helpful