function sortByKeys(arr, keys) {
let newArr = [];
arr.map(obj => {
let subArr = [];
for (let key of keys) {
subArr.push(obj[key]);
}
newArr.push(subArr);
});
newArr.sort((a, b) => {
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
if (isNaN(parseFloat(a[i])) || isNaN(parseFloat(b[i]))) {
if (a[i] === b[i]) continue;
return a[i].localeCompare(b[i]);
} else {
if (parseFloat(a[i]) === parseFloat(b[i])) continue;
return parseFloat(a[i]) - parseFloat(b[i]);
}
}
return 0;
});
return newArr;
}
let a = [
{aa:1,bb:2,cc:3},{aa:11,bb:22,cc:33},{aa:41,bb:42,cc:43}
]
let sortedArr = sortByKeys(a, ['aa', "cc","bb"]);
打印处来就是 a = [[1,3,2],[11,33,22],[41,43,42]]