📌  相关文章
📜  在 JavaScript 中按字符串属性值对对象数组进行排序(1)

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

在 JavaScript 中按字符串属性值对对象数组进行排序

在 JavaScript 中,我们可以使用 sort() 函数对数组进行排序。当对对象数组进行排序时,我们需要指定根据哪个属性值进行排序。

按属性值排序

我们可以使用 sort() 函数加上比较函数来进行排序。比较函数接受两个参数,分别为 ab,代表需要被比较的两个元素。比较函数需要返回一个数字,表示元素需要被插入到数组中的位置。

const arr = [
  { name: 'John', age: 20 },
  { name: 'Jane', age: 23 },
  { name: 'Bob', age: 18 }
];

arr.sort((a, b) => {
  if (a.name < b.name) return -1;
  if (a.name > b.name) return 1;
  return 0;
});

console.log(arr);

// Output:
// [
//   { name: 'Bob', age: 18 },
//   { name: 'Jane', age: 23 },
//   { name: 'John', age: 20 }
// ]

在上面的代码中,我们按 name 属性值对对象数组进行排序。比较函数根据 a.nameb.name 的大小来返回数字,如果 a.nameb.name 小,返回 -1,如果相等,返回 0,否则返回 1

指定排序顺序

我们可以通过修改比较函数来指定升序或降序排序顺序。如果需要升序排序,只需要将返回值反转即可。

arr.sort((a, b) => {
  if (a.name < b.name) return -1;
  if (a.name > b.name) return 1;
  return 0;
});

console.log(arr);

// Output:
// [
//   { name: 'Bob', age: 18 },
//   { name: 'Jane', age: 23 },
//   { name: 'John', age: 20 }
// ]

如果需要降序排序,只需要将返回值反转即可。

arr.sort((a, b) => {
  if (a.name < b.name) return 1;
  if (a.name > b.name) return -1;
  return 0;
});

console.log(arr);

// Output:
// [
//   { name: 'John', age: 20 },
//   { name: 'Jane', age: 23 },
//   { name: 'Bob', age: 18 }
// ]
结论

通过 sort() 函数和比较函数,我们可以轻松按字符串属性值对对象数组进行排序。同时,我们也可以通过修改比较函数来指定排序顺序,实现升序或降序排序。