数组对象 按照对象中的某个字段排序

在JavaScript中,可以使用数组的sort()方法按照对象中的某个字段对数组进行排序。

按照对象中的某个字段对数组进行排序:
基本排序方法
升序排序

const array = [
  { name: 'John', age: 25 },
  { name: 'Jane', age: 21 },
  { name: 'Bob', age: 30 }
];

// 按照age字段升序排序
array.sort((a, b) => a.age - b.age);

console.log(array);
/*
输出:
[
  { name: 'Jane', age: 21 },
  { name: 'John', age: 25 },
  { name: 'Bob', age: 30 }
]
*/

降序排序



// 按照age字段降序排序
array.sort((a, b) => b.age - a.age);

console.log(array);
/*
输出:
[
  { name: 'Bob', age: 30 },
  { name: 'John', age: 25 },
  { name: 'Jane', age: 21 }
]
*/

按照对象中的某个字符串字段对数组进行排序:

const array = [
  { name: 'John', age: 25 },
  { name: 'Jane', age: 21 },
  { name: 'Bob', age: 30 },
  { name: 'Alice', age: 28 }
];

// 按照name字段升序排序  字母排序
array.sort((a, b) => a.name.localeCompare(b.name));

console.log(array);
/*
输出:
[
  { name: 'Alice', age: 28 },
  { name: 'Bob', age: 30 },
  { name: 'Jane', age: 21 },
  { name: 'John', age: 25 }
]
*/

按照对象中的时间字段对数组进行排序

const array = [
  { name: 'Event 1', date: '2023-10-15' },
  { name: 'Event 2', date: '2023-09-20' },
  { name: 'Event 3', date: '2023-11-05' }
];

升序排序(从早到晚)

array.sort((a, b) => new Date(a.date) - new Date(b.date));

console.log(array);
/*
输出:
[
  { name: 'Event 2', date: '2023-09-20' },
  { name: 'Event 1', date: '2023-10-15' },
  { name: 'Event 3', date: '2023-11-05' }
]
*/

降序排序(从晚到早)

array.sort((a, b) => new Date(b.date) - new Date(a.date));

console.log(array);
/*
输出:
[
  { name: 'Event 3', date: '2023-11-05' },
  { name: 'Event 1', date: '2023-10-15' },
  { name: 'Event 2', date: '2023-09-20' }
]
*/

处理不同日期格式
如果你的日期格式不是ISO标准格式(YYYY-MM-DD),你需要确保new Date()能够正确解析你的日期字符串。例如:

const array = [
  { name: 'Event 1', date: '15/10/2023' }, // DD/MM/YYYY
  { name: 'Event 2', date: '20/09/2023' },
  { name: 'Event 3', date: '05/11/2023' }
];

// 自定义解析函数
function parseCustomDate(dateStr) {
  const [day, month, year] = dateStr.split('/');
  return new Date(year, month - 1, day); // 月份从0开始
}

array.sort((a, b) => parseCustomDate(a.date) - parseCustomDate(b.date));

console.log(array);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值