var year = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];

var monthsRange = ["aug", "oct"];


我需要得到一个数组,其中包含“ aug”和“ oct”之间的所有月份,而这两个也都基于year数组。

预期输出:var newArr = ["aug", "sept", "oct"];

如果为var monthsRange = ["aug", "sept"];,则预期输出为:var newArr = ["aug", "sept"];

如果为var monthsRange = ["aug"];,则预期输出为:var newArr = ["aug"];

最佳答案

Array#slice方法与Array#indexOf方法一起使用。

year.slice(year.indexOf(monthsRange[0]), year.indexOf(monthsRange[1]) + 1)




var year = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];

var monthsRange = ["aug", "oct"];

function getMonths(r, y) {
  return r.length > 1 ? y.slice(y.indexOf(r[0]), y.indexOf(r[1]) + 1) : r;
}

console.log(getMonths(monthsRange, year));
console.log(getMonths(["aug"], year));

07-28 05:39