从当前月份向后返回数组

时间:2020-01-30 07:05:55

标签: javascript

当前是一月。

  var d = new Date();
  var m = d.getMonth();

console.log(m)将放0;

我有一个数组:

var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

我想返回最近的4个月。从当月开始。所以在这种情况下。 一月,十二月,十一月,十月 我该如何实现?

var monthSliced = months.slice(m, m4).reverse();

返回:["Apr", "Mar", "Feb", "Jan"] 有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您可以循环四次,每次循环时,都可以使用months.slice(m).shift()从数组中获取元素。使用这种检索方法,您可以输入负索引并从数组末尾检索元素:

const d = new Date();
let m = d.getMonth();
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

const result = [];
for(let i = 0; i < 4; (i++, m--)) {
  result.push(months.slice(m).shift());
}
console.log(result);

答案 1 :(得分:1)

一种实现方法是:

const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
const currentMonth = new Date().getMonth();
const result = [];

for(let i = currentMonth; i > currentMonth - 4; i--) {
  result.push(months[(months.length + i) % months.length]);
}

console.log(result);

答案 2 :(得分:0)

var currentDate = new Date();
var currentMonth = currentDate.getMonth();
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var result = [];


function getPreviousMonths(month, count) {
    if(count > 3) return;
    if(month === -1) month = 11;
    result.push(months[month])
    getPreviousMonths(--month, ++count)
}

getPreviousMonths(currentMonth, 0, [])
console.log(result)