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

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

大括號是否更改了此函數的讀數

大括號是否更改了此函數的讀數

萬千封印 2022-09-29 16:34:44
我正在編寫一個函數,以使用concat和 reduce方法從雄辯的javascript中扁平化數組。當我像這樣編寫代碼時:    function flatten(args){       return args.reduce((current,i) =>{           current.concat(i);       },[] );   }   let arrays = [[1, 2, 3], [4, 5], [6]];   console.log(flatten(arrays));我得到以下錯誤:current.concat(i);                ^TypeError: Cannot read property 'concat' of undefined但是當我擺脫本節中的大括號“{}”時:以前:return args.reduce((current,i) =>{        current.concat(i);    },[] );后:return args.reduce((current,i) =>        current.concat(i)    ,[] );}它打印出來就好了。當查找初始化為 0 的總和時,此格式工作正常。當 [] 位于大括號 “{}” 內時,concat 方法是否無法識別 []。
查看完整描述

1 回答

?
婷婷同學_

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

簡短的回答:是的,這是不同的。您的化簡器需要在函數中返回一個值。參數的值等于調用最后一個 reduce 函數調用的最后一次返回。在第一次調用中,該參數等于對 reduce 函數調用(即 )的第二個參數中指定的初始值。currentcurrent[]


顯式返回支持的版本也可以解決此問題:current


function flatten(args) {

   return args.reduce((current, i) => {

       return current.concat(i);

   }, []);

}

如果沒有大括號,返回將隱式返回由 concat 表達式(一個新數組)返回的值。


有關箭頭函數如何工作的更多信息,請查看 MDN 的箭頭函數一文。具體來說,本節討論它是如何暗示的:


(param1, param2, …, paramN) => expression

// equivalent to: => { return expression; }

以及本節:


// When the only statement in an arrow function is `return`, we can remove `return` and remove

// the surrounding curly brackets

elements.map(element => element.length); // [8, 6, 7, 9]


查看完整回答
反對 回復 2022-09-29
  • 1 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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