gpt4 book ai didi

javascript - 在给定最小值和最大值的情况下,构造月-年日期的排序数组的算法的缺陷在哪里?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:26 24 4
gpt4 key购买 nike

我想要的:

给定两个月-年对,例如 (5/2015)、(2/2016) 我想构造一个数组,如

[ '5/2015', '6/2015', '7/2015', '8/2015', '9/2015', '10/2015', '11/2015', '12/2015', '1/2016', '2/2016' ]

我的算法是

var parts1 = DateToMmDdYyyy(new Date(SortedByDate[0].Created)).split('/'),
parts2 = DateToMmDdYyyy(new Date(SortedByDate[SortedByDate.length - 1].Created)).split('/');
var y1 = +parts1[2],
m1 = +parts1[0],
y2 = +parts2[2],
m2 = +parts2[0],
Labels = new Array();
while ( y1 <= y2 && m1 <= m2 )
{
Labels.push(y1 + '/' + m1);
if ( m1 < 12 ) { ++m1; }
else { ++y1; m1 = 1; }
}

在使用有效的 y1m1y2m2 值运行后,我得到了一个空数组 Labels。我哪里错了?是否有可能使它更优雅、紧凑、高效、可读和正确?

最佳答案

循环条件应该是这样的

while ( y1 < y2 || y1 == y2 && m1 <= m2 )

否则,由于 m2 < m1 ,循环将不会运行,即使 y1 < y2 .

var y1 = 2015, m1 = 6, 
y2 = 2016, m2 = 2,
labels = [];
while ( y1 < y2 || y1 == y2 && m1 <= m2 ) {
labels.push(y1 + '/' + m1);
if ( m1 < 12 ) { ++m1; }
else { ++y1; m1 = 1; }
}
snippet.log(labels);
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --><script src="https://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

关于javascript - 在给定最小值和最大值的情况下,构造月-年日期的排序数组的算法的缺陷在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35371439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com