我有我需要排序的自定义函数对象的数组,因为我想要做的几个对象属性的这几次,我想通过键名的属性dinamically到自定义排序功能:
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)
应该成为这样的:
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'))
可在此方便的方式来完成? 谢谢。
您将需要部分应用使用的功能,比如bind
:
arrayOfObjects.sort(compareOn.bind(null, 'myKey'));
或者你只是让compareOn
返回实际的排序功能,与外部函数的参数(如由他人证明)参数化。
您可以添加一个包装:
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"));
是的,从一台发电机,这需要PARAM这是你想要的键返回的比较
function compareByProperty(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(compareByProperty('myKey'));
compareByProperty('myKey')
返回函数做比较,然后将其通入.sort