Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_String_Algorithm_Sorting - Fatal编程技术网

Javascript 对表示时间的字符串进行排序,并取最近的一个

Javascript 对表示时间的字符串进行排序,并取最近的一个,javascript,arrays,string,algorithm,sorting,Javascript,Arrays,String,Algorithm,Sorting,我有这样一个数组: const array = ['Monthly', 'Annually', 'Quarterly', 'Annually', 'Quarterly', 'Monthly']; const array = ['Monthly', 'Annually', 'Quarterly']; 删除重复项后,我将得到如下数组: const array = ['Monthly', 'Annually', 'Quarterly', 'Annually', 'Quarterly', 'Mont

我有这样一个数组:

const array = ['Monthly', 'Annually', 'Quarterly', 'Annually', 'Quarterly', 'Monthly'];
const array = ['Monthly', 'Annually', 'Quarterly'];
删除重复项后,我将得到如下数组:

const array = ['Monthly', 'Annually', 'Quarterly', 'Annually', 'Quarterly', 'Monthly'];
const array = ['Monthly', 'Annually', 'Quarterly'];
现在我应该得到最短的周期。我曾想过将每个字符串与一个数字关联,以便以这种方式变换数组:

const array = [{name:'Monthly', order:1}, {name:'Annually',order:3}, {name:'Quarterly',order:2}];
然后根据顺序计算最小值


你有其他改进算法的建议吗?可以改进吗?

一个小改进:

删除重复项是多余的,因为它需要
O(n)
空间或
O(nlogn)
时间,因为它是的变体,而查找最小值可以在
O(n)
时间和
O(1)
空间中完成


另外,不确定您的“顺序”到底是什么,如果它是在编译/预处理时计算一次的值,并且是常量,那么这很好,只要您不为每个查询对列表进行排序,那么“顺序”只是我在执行函数计算最小值时放在那里的一个值