我有几天的时间:
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);
执行此操作的一种好方法是什么?
答案 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)