Javascript 根据对象内部的数字,然后根据对象内部的字符串对对象数组进行排序

Javascript 根据对象内部的数字,然后根据对象内部的字符串对对象数组进行排序,javascript,arrays,reactjs,sorting,javascript-objects,Javascript,Arrays,Reactjs,Sorting,Javascript Objects,我知道我可以做一个算法,将排序的数组,我有,但我想知道最好的和最优化的方式 这是我现在拥有的数组,我想根据年份对它进行排序,这样2021年的值将首先出现,然后是2022年,依此类推,完成之后,我想根据月份进行排序,这样最终的数组就像 [ 0: {month:'Aug', year:2021}, 1: {month:'Jul', year:2022}, 2: {month:'May', year:2100}, ] 另外,我的数组长度永远不会超过12您可以使用函数array.prototy

我知道我可以做一个算法,将排序的数组,我有,但我想知道最好的和最优化的方式

这是我现在拥有的数组,我想根据年份对它进行排序,这样2021年的值将首先出现,然后是2022年,依此类推,完成之后,我想根据月份进行排序,这样最终的数组就像

[
 0: {month:'Aug', year:2021},
 1: {month:'Jul', year:2022},
 2: {month:'May', year:2100},
]


另外,我的数组长度永远不会超过12

您可以使用函数
array.prototype.sort()
,该函数将Comparison函数作为参数:

const月=[
“简”,
“二月”,
“三月”,
“四月”,
“五月”,
“六月”,
“七月”,
“八月”,
“九月”,
“十月”,
“11月”,
“十二月”,
];
常量数组=[
{月份:“8月”,年份:2021},
{月份:“七月”,年份:2022},
{月份:“五月”,年份:2100},
{月份:“一月”,年份:2100},
];
console.log(
array.sort((item1,item2)=>
项目1.year==项目2.year
?月.indexOf(项目1.月)-月.indexOf(项目2.月)
:item1.year-item2.year
)
);
const arr=[
{月份:“8月”,年份:2021},
{月份:“七月”,年份:2022},
{月份:“五月”,年份:2100},
];
常数月={
1月1日,
二月二号,,
三月三日,
四月四日,
五月五日,
六月六号,,
七月七日,
八月八日,
九月九日,
10月10日,
11月11日,
德夫:12,
};
arr.sort((a,b)=>{
如果(a年控制台日志(arr)这可能是您正在查找的内容:。您需要编写自己的比较函数,这应该不难。您的解决方案缺少按月份排序的部分。事实上,感谢@BronislavRůžčka i将更新
a.year-b.year | months[a.month]-months[b.month]
@georg,非常简洁。非常感谢你。。。顺便说一句,我个人喜欢简洁的代码。