我正在處理一個問題,其中一個數組作爲解構結構參數傳遞給一個函數,然後該函數用於遞歸地將數組中每個數字元素的值加倍。 (演習的目的是制定一個解決方案不使用數組輔助方法)瞭解遞歸函數的解構參數
const numbers = [1, 2, 3]
// should return '[2, 4, 6]'
這裏的解決方案,我發現:
function double([first, ...rest]) {
if (rest.length) {
return [first * 2, ...double(rest)];
} else {
return [first * 2];
}
}
(FWIW我也注意到,這解決方案將在您忽略else
條件時起作用。)
我在努力瞭解第二個塊中的操作first * 2
如何轉換爲rest
作爲參數...double(rest)
。任何相關的輸入/參考將非常感謝!
你說的是'返回[第一的例子* 2];'在'else'塊?它與「休息」沒有任何關係。 –
它是遞歸的,它需要任何數量的參數。第一個參數總是定義爲「first」,而其餘的參數使用rest參數,並且將是一個數組。 然後它將這些參數傳遞給下一個遞歸調用,其中「rest」數組中的第一個數字將作爲「first」傳遞給下一個調用等,直到沒有更多參數爲止 – adeneo
將空值檢查是否爲空數組的情況(在這種情況下'first'將會是'undefined',並且您應該返回'[]')。然後它將與一個空數組一起工作,現在情況並非如此。 – 2016-10-01 05:40:15