[英]Recursively get every nth element from array Javascript
我有一個 colors 數組,我需要遞歸地獲取每個第 n 個元素來生成圖例。 colors 陣列可能如下所示:
[
'red',
'dark_red',
'dark_dark_red',
'green',
'dark_green',
'dark_dark_green',
'blue',
'dark_blue',
'dark_dark_blue'
]
我有可變數量的圖例項目,我想為其生成 colors。 當以如下模式循環遍歷圖例項時,我希望能夠根據索引生成 colors:
1 - green
2 - blue
3 - dark_red
4 - dark_green
5 - dark_blue
6 - etc...
我怎么可能 go 關於這個? 我嘗試使用模數和雙循環語句,但無法正確生成 colors。
要獲得nthItems
:
function nthItems(array, n){ const r = []; for(let i=n-1,l=array.length; i<l; i+=n){ r.push(array[i]); } return r; } const a = [ 'red', 'dark_red', 'dark_dark_red', 'green', 'dark_green', 'dark_dark_green', 'blue', 'dark_blue', 'dark_dark_blue' ]; console.log(nthItems(a, 2)); console.log(nthItems(a, 3));
StackSlave 的答案是最有效的方式,但如果你想要一種遞歸方式,你可以這樣做
const a = [ 'red', 'dark_red', 'dark_dark_red', 'green', 'dark_green', 'dark_dark_green', 'blue', 'dark_blue', 'dark_dark_blue' ]; const nthItems = (array, n) => { const results = []; const addItem = index => { if (index < array.length) { results.push(array[index]); addItem(index + n); } }; addItem(0); return results; }; console.log(nthItems(a, 2)); console.log(nthItems(a, 3));
但這純粹是為了遞歸而遞歸的,當 for 循環可以執行時,它會不必要地向堆棧添加值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.