我正在尝试在typescript
中实现一个函数,用户可以在其中传递array
个对象和其中一个对象的属性,并通过用户选择的属性返回列表顺序
function OrderByArray(values: any[], orderType: any) {
//TODO: implement code
return values;
}
有什么办法吗?我知道如何对数组进行排序,但我不知道如何允许通过它发送typeof对象和顺序。
谢谢!
答案 0 :(得分:7)
您可以使用Array.sort方法:
function OrderByArray(values: any[], orderType: any) {
return values.sort((a, b) => {
if (a[orderType] < b[orderType]) {
return -1;
}
if (a[orderType] > b[orderType]) {
return 1;
}
return 0
});
}
我不确定item[orderType]
的价值是什么,因此您可能需要更改if
。
使用它:
let animals = [{ name: "cat" }, { name: "dog" }, { name: "lion" }];
let cars = [{ manufacturor: "ford" }, { manufacturor: "mazda" }, { manufacturor: "fiat" }];
console.log(OrderByArray(animals, "name").map(item => item.name)); // ["cat", "dog", "lion"]
console.log(OrderByArray(cars, "manufacturor").map(item => item.manufacturor)); // ["fiat", "ford", "mazda"]
在typescript 2.1中你可以做到:
function OrderByArray<T, K extends keyof T>(values: T[], orderType: K) {
...
}
答案 1 :(得分:0)
您可能不需要以mentioned in MDN的形式返回values.sort(...)的结果
Array.sort实际上会更改或更改其排序的数组