pao*_*iti 10 javascript sorting parameters optional-parameters
我有一个对象数组,我需要对自定义函数进行排序,因为我想在几个对象属性上多次这样做,我想将属性的键名称传递给自定义排序函数:
function compareOnOneFixedKey(a, b) {
a = parseInt(a.oneFixedKey)
b = parseInt(b.oneFixedKey)
if (a < b) return -1
if (a > b) return 1
return 0
}
arrayOfObjects.sort(compareByThisKey)
Run Code Online (Sandbox Code Playgroud)
应该成为:
function compareOnKey(key, a, b) {
a = parseInt(a[key])
b = parseInt(b[key])
if (a < b) return -1
if (a > b) return 1
return 0
}
arrayOfObjects.sort(compareOn('myKey'))
Run Code Online (Sandbox Code Playgroud)
这可以方便吗?谢谢.
Vis*_*ioN 11
你可以添加一个包装器:
function compareOnKey(key) {
return function(a, b) {
a = parseInt(a[key], 10);
b = parseInt(b[key], 10);
if (a < b) return -1;
if (a > b) return 1;
return 0;
};
}
arrayOfObjects.sort(compareOnKey("myKey"));
Run Code Online (Sandbox Code Playgroud)
Ber*_*rgi 10
arrayOfObjects.sort(compareOn.bind(null, 'myKey'));
Run Code Online (Sandbox Code Playgroud)
或者您只compareOn返回实际的排序函数,使用外部函数的参数进行参数化(如其他函数所示).