有一個簡單的函式,它的本質是從一個數(n)到0計數。但是使用reduce的時候,這個函式就是不行,不管我怎么改寫,要么回傳一個空陣列,要么回傳undefined , 或數字本身 2. 首先,我創建了一個將采用 n 的陣列,然后我創建了一個 reduce 方法,其中 currentValue 將采用 n 并從中減去 1,在累加器之后它采用結果數字并使用 push 方法,添加它添加到串列陣列,但我不明白我應該如何添加一個條件,如果累加器等于 0,則必須停止該函式。
const countBits = (n) => {
let list = [n];
let resultReduce = n.reduce((accumulator, currentValue) => {
accumulator = currentValue - 1;
list.push(accumulator);
});
return resultReduce;
};
console.log(countBits([2]));
為什么這不像我想要的那樣作業?
uj5u.com熱心網友回復:
reduce將在陣列中的每個專案上運行,accumulator(回呼函式的第一個引數)是從回呼函式的前一次迭代回傳的值。因此,如果您不回傳任何內容,accumulator將undefined用于下一次迭代。
如果你想從數n到0,reduce是不是要走的路(還有一個事實,即在當前的實作,你甚至不使用list這將包含所有存盤的號碼中從n到0)。我建議相反,您只需從nto回圈0并將這些值推送到一個陣列中,如下所示:
const countBits = (n) => {
let list = [];
for (let i = n; i > -1; i--) {
list.push(i);
}
return list;
};
console.log(countBits(2));
另請注意,我在函式呼叫中稍微更改了您的語法 - 您似乎不必要地傳遞了一個包含單個元素的陣列,因此我只是傳遞了元素本身以簡化代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/392828.html
標籤:javascript
上一篇:連接三個陣列以制作一個陣列,該陣列是行與列的笛卡爾積和與單元格的動態關系的組合
下一篇:無法將target.value傳遞給statehookreturnundefined-React.jsReact
