亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

.push() 和 .reduce() 在這里如何協同工作?

.push() 和 .reduce() 在這里如何協同工作?

www說 2023-10-20 16:13:57
我已經完成了一項作業,其中函數的輸出是斐波那契數組的最后一個數字。說實話,我在這個問題上陷入了困境,我在 stackoverflow 上的第二個 else if 語句中找到了代碼。但我無法理解它到底是如何工作的。這是代碼:const fibonacci = function(input) {    let n = Number(input);        if (n === 1) {            return 1;        } else if (n < 1) {            return "OOPS";        } else if (n > 1) {            let array = new Array(n);                              // <---- Starting here            let filled = array.fill(1);            let reduced = filled.reduce((acc, _, i) => {                acc.push((i <=1) ? i : acc[i-2] + acc[i-1])                    return acc;                                      },[]);return reduced[n - 1] + reduced[n - 2];        }} 我的問題:為什么reduced返回一個數組而不是單個值?既然它返回一個數組 - 為什么push'ed 數字不會添加到初始數組中,其中已經有值了?input = 4->那么我們就說吧filled = [1, 1, 1, 1]。
查看完整描述

1 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

const fibonacci = function(input) {

    let n = Number(input);

        if (n === 1) {

            return 1;

        } else if (n < 1) {

            return "OOPS";

        } else if (n > 1) {

            let array = new Array(n);                              // <---- Starting here

            let filled = array.fill(1);

            let reduced = filled.reduce((acc, _, i) => {

                acc.push((i <=1) ? i : acc[i-2] + acc[i-1])

                    return acc;                          

            },[]); // <- reduce is initialized with an array (new array),

return reduced[n - 1] + reduced[n - 2];

        }

由于reduce是用新數組初始化的,因此該函數正在減少(將新值添加到新的初始化數組中)并返回相同的值。

這里的減速器是如何工作的 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce



查看完整回答
反對 回復 2023-10-20
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號