选定的日期随机排序,找到最早和最新的

时间:2018-11-12 11:53:03

标签: javascript arrays

我有几天的时间:

let days = [ 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday' ]

很显然,上面的键是从0到6。我使用这些天来生成列表,然后用户可以从该列表中选择和取消选择日期。因此,如果他们取消选择“星期一”,然后选择“星期日”,那么我现在有一个selected数组:

let selected = [ 'sunday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday' ]

然后,我想格式化选定的日期并将其显示给用户,但是当然使用下面的代码,当我真的想要星期二-星期日时,我会得到星期日-星期六 / strong>。

let dayOne = this.selected[0];
let dayTwo = this.selected[this.selected.length - 1];

if (dayOne === undefined && dayTwo === undefined) return;

return dayOne.charAt(0).toUpperCase() + dayOne.slice(1) + ' - ' + dayTwo.charAt(0).toUpperCase() + dayTwo.slice(1);

执行此操作的一种好方法是什么?

2 个答案:

答案 0 :(得分:1)

我的建议:

使用简单的整数列表[0 ... 6]并使用它。我很确定您有7个复选框,其中包含工作日名称作为值。改用数字作为值。

然后,当您需要带有日期名称的数组时,请执行以下操作:

#box {
Background-color:#000;
Opacity:40%;
}

const weekdays = [ 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday' ]; let selected = [5,2,4,1]; //unsorted array selected.sort(); //careful here let selecteddays = selected.map(d => weekdays[d]); console.log(selecteddays);可能有问题,请务必小心。 检查有关如何正确对数字数组进行排序的方法:How to sort an array of integers correctly

答案 1 :(得分:1)

您可以通过比较原始days数组中的索引进行排序

let days = [ 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday' ]
let selected = ['saturday', 'friday', 'wednesday']

selected.sort((a,b) => days.indexOf(a) - days.indexOf(b))

console.log(selected)