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));