2017-01-29 2 views
0

Я пытаюсь сделать функцию, которая ведет себя, как показано ниже:Каков наилучший способ получить следующие 7-дневные имена в узле?

getNext7Days() 
// if today is monday it will return: ['Monday', 'Tuesday',...,'Sunday'] 
// if today is tuesday it will return: ['Tuesday', Wednesday',...,'Monday] 

Я ищу лучшее решение с ES6 или momentjs, а не делать петлю, добавив один день на текущую дату и получить название дня.

ответ

3

Нет библиотеки решений:

let days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 
let today = new Date().getDay(); // Sunday is 0 
return days.slice(today).concat(days.slice(0, today)); 
2

Date.prototype.getDay возвращает день недели, число, где 0 это воскресенье, что делает удобным индекс в массиве:

const DAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 
 

 
function next7Days(date = new Date()) { 
 
    const today = date.getDay(); 
 
    return DAYS.slice(today).concat(DAYS.slice(0, today)); 
 
} 
 

 
console.log(next7Days()); 
 
// => ["Sunday", "Monday", ... "Saturday"] 
 
console.log(next7Days(new Date(2020, 0, 1))); 
 
// => ["Wednesday", "Thursday", ... "Tuesday"]

Смежные вопросы