> 来源:原创题 > 难度:★★ **封装一个函数,接收一个整数参数 `n` ,返回当天前 n 天的日期(不含当天)** ```js /** * @param {number} n - 天数 * @return {array} 日期数组,格式:[yyyy-MM-dd, yyyy-MM-dd] */ function getPastDays(n) { // 你的代码 } ``` **测试用例:** ```js getPastDays(7); // 获取前 7 天的日期(今天是:2019年5月13日) // 运行返回数据: ["2019-05-06", "2019-05-07", "2019-05-08", "2019-05-09", "2019-05-10", "2019-05-11", "2019-05-12"] ``` ---- **参考答案:** ```js function getPastDays(n) { // 非整数或负数,返回空数组 if (!Number.isInteger(n) || n < 0) { return []; } const oneDay = 24 * 3600 * 1e3; // 将1天时间换算成UTC毫秒数 const preZero = num => num < 10 ? `0${num}` : num; // 1位数前置补零 return ( [...Array(n).keys()] .map(days => new Date(Date.now() - oneDay * (days + 1))) .map(day => `${day.getFullYear()}-${preZero(day.getMonth() + 1)}-${preZero(day.getDate())}`) .reverse() // 反转数组,按从远到近的日期顺序 ); } ``` ---- **本期优秀回答者:** @liwenkang @Wxh16144
Activity
liwenkang commentedon May 13, 2019
Wxh16144 commentedon May 14, 2019
早上上班看到这个题目,想到了微信公众号
前端早读课推送的一篇文章【第1608期】What's New in JavaScript(视频)wingmeng commentedon May 14, 2019
答案非常精彩,然而返回的日期顺序应该是从远到近。