按特定字符串值对对象数组进行排序[重复]

问题描述 投票:0回答:1

我想按某个字符串值对对象数组进行排序。例如,我有以下对象数组:

const stores = [
{id: 1, name: 'Store1', country: 'USA'},
{id: 2, name: 'Store2', country: 'Canada'},
{id: 3, name: 'Store3', country: 'USA'},
{id: 4, name: 'Store4', country: 'Canada'}
];

我想对该数组进行排序,以便将国家/地区值为“加拿大”的所有对象排在第一位。我知道您可以按数字排序,但我不确定如何按字符串值排序。我该怎么做呢?预先感谢您!

javascript arrays sorting
1个回答
0
投票

您可以使用

Array.prototype.toSorted()
不通过自定义排序函数改变 JavaScript 中的数组方法来实现此目的:

这是代码示例:

const stores = [ {id: 1, name: 'Store1', country: 'USA'}, {id: 2, name: 'Store2', country: 'Canada'}, {id: 3, name: 'Store3', country: 'USA'}, {id: 4, name: 'Store4', country: 'Canada'} ];
function sortByCountryFirst(array, country) {
  return array.toSorted((a, b) => {
    if (a.country === country && b.country !== country) {
      return -1;
    } else if (a.country !== country && b.country === country) {
      return 1;
    } else {
      return 0;
    }
  });
}
console.log(sortByCountryFirst(stores, 'Canada'));

© www.soinside.com 2019 - 2024. All rights reserved.