我有減少的問題。
我想從陣列中的第一個陣列中添加其余的陣列。array = [[a,b],[c,d],[e,f]] 來的順序是:(ab) (cd) (ef),但我的代碼不起作用:((
我的代碼是:
const sumAndSubtract = (numberInNestedArray) => {
return numberInNestedArray.reduce((acc, cur, ind, arr) => {
const firstSubtract = arr[0][0] - arr[0][1];
const otherSubtract = acc[ind] - cur[ind];
console.log(firstSubtract);
console.log(otherSubtract);
return firstSubtract otherSubtract;
})
}
console.log(sumAndSubtract([
[10, 0],
[5, 7],
[6, 9]
]))
預期結果:10 (-2) (-3)
uj5u.com熱心網友回復:
使用reduce如下,其中a是累計和,b和c是從每對檢索的原子值:
let result = [[10, 0], [5, 7], [6, 9]].reduce((a, [b, c]) => a b-c, 0);
console.log(result);
在您的嘗試中,以下是不正確的:
表達
arr[0][0] - arr[0][1]。這只查看陣列中的第一對,并且在每次迭代中都這樣做。相反,你應該做cur[0] - cur[1].運算式
acc[ind] - cur[ind]:ind是外部陣列中的索引,對于示例輸入,它采用值 0、1 和 2。acc[ind]是一對,而不是數字,并且cur[ind]在某些時候會超出范圍參考,因為cur只有兩個值。對 的呼叫
reduce應該獲得初始值引數,因為沒有它,第一對將是 的初始值acc,您不想要它:您想要一個數字。因此,將 0 作為初始值引數傳遞給reduce.你所說
otherSubtract的已經給出了acc,所以你實際上不需要這個變數。
uj5u.com熱心網友回復:
您可以映射減法并稍后添加值。
const
add = (a, b) => a b,
subtract = (a, b) => a - b,
sumAndSubtract = array => array
.map(a => a.reduce(subtract))
.reduce(add);
console.log(sumAndSubtract([[10, 0], [5, 7], [6, 9]]));
uj5u.com熱心網友回復:
最短的方法是:
numberInNestedArray.reduce((acc, cur) => acc (cur[0] - cur[1]), 0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363213.html
標籤:javascript
上一篇:加載第一個腳本后如何使腳本執行
