Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript按月份名称按字符串排序?_Javascript_Reactjs - Fatal编程技术网

如何使用javascript按月份名称按字符串排序?

如何使用javascript按月份名称按字符串排序?,javascript,reactjs,Javascript,Reactjs,我有一个字符串“四月、八月、七月、六月、五月”。我想按月名订购。 所需的输出是四月、五月、六月、七月、八月最简单的解决方案可能是: const s = "APRIL,AUGUST,JULY,JUNE,MAY"; const months = ["JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", &q

我有一个字符串
“四月、八月、七月、六月、五月”
。我想按月名订购。
所需的输出是
四月、五月、六月、七月、八月

最简单的解决方案可能是:

const s = "APRIL,AUGUST,JULY,JUNE,MAY";
const months = ["JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "OCTOBER", "SEPTEMBER", "NOVEMBER", "DECEMBER"]
let resultArray = [];

months.forEach(month => {
    if (s.includes(month)) {
        resultArray.push(month);
    }
})

console.log(resultArray.join(','));

您可以保留所有月份的订单列表,并根据该列表进行排序:

const order=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
常量排序=(数据)=>
数据
.split(“,”)
.sort((a,b)=>order.indexOf(a)-order.indexOf(b))
.join()
常量数据1='四月、八月、七月、六月、五月'
控制台日志(排序(数据1))
常量数据2='四月、八月、七月、六月、五月、四月'
log(sort(data2))
对预排序的数组使用Array#filter(),并检查字符串中是否存在每个名称

const s=“四月、八月、七月、六月、五月”;
常量月=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“十月”、“九月”、“十一月”、“十二月”]
const res=months.filter(m=>s.includes(m)).join()

console.log(res)
其他解决方案可能效率低下,因为它们依赖于原型的String.includes或Array.indexOf,其成本仅为O(n)(其中n是输入字符串的长度)。 我提出了一个使用字典的替代解决方案,它支持在摊销
O(1)
时间中进行索引。 总体时间复杂度为
O(m logm)
,其中
m
输入
字符串中的月数

您可以在摊销O(1)时间内,在
monthNamesObj
中索引月份名称

const input=“四月、八月、七月、六月、五月”;
//inputMonthNames=[“四月”、“八月”、“七月”、“六月”、“五月”]
常量inputMonthNames=input.split(',');
//将月份名称映射到相应顺序索引的字典
const monthNamesObj={
“一月”:0,
"二月":一,,
"三月":二,,
"四月":三,,
"五月":四,,
六月五日,
七月六日,
八月七日,
"九月":八,,
十月九日,
11月10日,
"12":11,,
};
//根据输入月份名称的数字顺序对其进行排序
const orderedMonts=inputMonthNames.sort((a,b)=>MonthNamesBj[a]-MonthNamesBj[b]);
//四月、五月、六月、七月、八月
log(orderedMonths.join(',')1。按
,“
拆分字符串。2.对获得的数组进行排序。3.通过
,“
加入它。