[英]js sort() custom function how can i pass more 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)
應該成為:
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'))
這可以方便嗎? 謝謝。
你可以添加一個包裝器:
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
const objArr = [{ name: 'Z', age: 0 }, { name: 'A', age: 25 }, { name: 'F', age: 5 }] const sortKey = { name: 'name', age: 'age' } const sortArr = (arr, key) => { return arr.sort((a, b) => { return a[key] < b[key] ? -1 : a[key] > b[key] ? 1 : 0 }) } console.log("sortKey.name: ", sortArr(objArr, sortKey.name)) console.log("sortKey.age: ", sortArr(objArr, sortKey.age))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.