📌  相关文章
📜  在js中按升序对对象数组进行排序 - Javascript(1)

📅  最后修改于: 2023-12-03 15:37:36.503000             🧑  作者: Mango

在 JavaScript 中按升序对对象数组进行排序

在 JavaScript 中,我们可以使用 Array.prototype.sort() 方法对数组进行排序。默认情况下,sort() 方法将按照字符串的Unicode编码位置进行排序。如果要按升序排序,我们可以传入一个比较函数来指定排序规则。

下面演示如何按照对象数组中某个属性的值升序排序:

const users = [
  { name: 'John', age: 25 },
  { name: 'Jane', age: 18 },
  { name: 'Bob', age: 40 },
  { name: 'Mary', age: 30 }
];

// 按照 age 属性升序排序
users.sort((a, b) => a.age - b.age);

console.log(users);
// 输出:
// [
//   { name: 'Jane', age: 18 },
//   { name: 'John', age: 25 },
//   { name: 'Mary', age: 30 },
//   { name: 'Bob', age: 40 }
// ]

上面的代码中,sort() 方法的比较函数接受两个参数 ab,代表待比较的两个数组元素。这里我们通过比较 a.ageb.age 的大小来指定排序规则,如果 a.age 大于 b.age,则返回正数,否则返回负数或0。

我们也可以通过将比较函数封装成一个函数来重用,例如:

// 封装比较函数
function sortBy(key) {
  return (a, b) => a[key] - b[key];
}

// 使用比较函数
users.sort(sortBy('age'));

console.log(users);
// 输出和上面一样

上面的 sortBy() 函数返回一个比较函数,该比较函数会在排序时比较数组元素的 key 属性的值,其中 keysortBy() 函数的参数传入。

最后需要注意的是,sort() 方法会修改原数组,如果需要保留原数组,则需要先复制一份再进行排序,例如:

const sortedUsers = users.slice().sort(sortBy('age'));