写一个方法对数组对象的某几个key进行排序

在前端开发中,JavaScript 是一种常用的语言,我们可以使用其数组的 sort() 方法来对数组对象的特定 key 进行排序。以下是一个简单的示例,假设我们有一个对象数组,并且我们想要根据对象的 age key 对其进行排序:

function sortByKey(array, key) {
    return array.sort((a, b) => (a[key] > b[key]) ? 1 : (b[key] > a[key]) ? -1 : 0);
}

// 示例数组
let people = [
    { name: 'Alice', age: 25 },
    { name: 'Bob', age: 20 },
    { name: 'Charlie', age: 30 }
];

// 使用 sortByKey 函数对 people 数组按 age 排序
people = sortByKey(people, 'age');

console.log(people);
// 输出: [ { name: 'Bob', age: 20 }, { name: 'Alice', age: 25 }, { name: 'Charlie', age: 30 } ]

在这个例子中,sortByKey 函数接受一个数组和一个 key 作为参数。它使用 sort() 方法对数组进行排序,该方法接受一个比较函数作为参数。比较函数根据 key 的值来比较数组中的两个元素,并返回一个表示它们顺序的数字。

如果你想要对多个 key 进行排序,你可以稍微修改这个函数,使其接受一个 key 数组,并依次根据这些 key 进行排序。以下是一个示例:

function sortByKeys(array, keys) {
    return array.sort((a, b) => {
        for (let key of keys) {
            if (a[key] !== b[key]) {
                return a[key] > b[key] ? 1 : -1;
            }
        }
        return 0;
    });
}

// 示例数组
let people = [
    { name: 'Alice', age: 25, city: 'B' },
    { name: 'Bob', age: 25, city: 'A' },
    { name: 'Charlie', age: 30, city: 'C' },
    { name: 'David', age: 20, city: 'D' }
];

// 使用 sortByKeys 函数对 people 数组先按 age,然后按 city 排序
people = sortByKeys(people, ['age', 'city']);

console.log(people);
// 输出: [ { name: 'David', age: 20, city: 'D' }, { name: 'Bob', age: 25, city: 'A' }, { name: 'Alice', age: 25, city: 'B' }, { name: 'Charlie', age: 30, city: 'C' } ]

在这个例子中,sortByKeys 函数接受一个数组和一个 keys 数组作为参数。它使用 sort() 方法对数组进行排序,并根据 keys 数组中的 key 依次比较数组中的两个元素。

posted @ 2025-01-04 10:16  王铁柱6  阅读(13)  评论(0编辑  收藏  举报