var year = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
var monthsRange = ["aug", "oct"];
我需要得到一个数组,其中包含'aug'和'oct'之间的所有月份,这两个也基于年数组。
预期输出:var newArr = ["aug", "sept", "oct"];
如果var monthsRange = ["aug", "sept"];
则预期输出:var newArr = ["aug", "sept"];
如果var monthsRange = ["aug"];
则预期输出:var newArr = ["aug"];
答案 0 :(得分:3)
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));
答案 1 :(得分:0)
以下方式怎么样?如果你想尝试一些不同的方式。
var year = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
var monthsRange = ["aug", "oct"];
function checkMonth(month) {
return year.indexOf(month) >= year.indexOf(monthsRange[0]) && year.indexOf(month) <= year.indexOf(monthsRange[1]);
}
console.log(year.filter(checkMonth));
&#13;
答案 2 :(得分:0)
Thisp提案也适用于monthsRange = ["sep", "feb"]
。
function getMonths(range) {
var year = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'],
start = year.indexOf(range[0]),
end = year.indexOf(range[1] || range[0]);
if (start <= end) {
return year.slice(start, end + 1);
} else {
return year.slice(start).concat(year.slice(0, end + 1));
}
}
console.log(getMonths(["sep", "feb"]));
console.log(getMonths(["mar"]));
console.log(getMonths(["may", "oct"]));