簡體   English   中英

根據另一個數組從數組中獲取元素范圍

[英]Get range of elements from array based on another array

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

下面的方式呢? 如果您想嘗試一些不同的方法。

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

該提案建議也可以使用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"])); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM