我有一個非常簡單的問題,我正在學習 javascript。
我有這個二維陣列:-
let text = [[1,a],[2,b]]
我想對陣列的數值求和,我知道如何使用 for 回圈來做,但是有什么方法可以用更短的方式做,就像我們可以使用 1D 陣列來做一樣reduce?
如果我有這個陣列:-
let text = [1,2]
我可以像這樣輕松地將其總結為一行:-
text.reduce((a,b) => a b)
有沒有辦法對也有字串值的二維陣列做同樣的事情。
謝謝
uj5u.com熱心網友回復:
您可以使用相同Array.prototype.reduce()的稍作修改來構建一個自定義匯總函式,該函式可以接受源陣列和col指示目標列的變數:
const src = [[1,'a'],[2,'b']]
const sumByCol = (arr, col) =>
arr.reduce((acc, row) => acc row[col], 0)
console.log(sumByCol(src,0))
uj5u.com熱心網友回復:
Yevgen Gorbunkov 的答案的一個小替代方案。
const src = [[1, 'a', 4], [2, 'b', 5], [3, 'c', 6]];
const sum_by_col = (arr, col) =>
arr
.map((row) => row[col]) // pull column into new array
.reduce((a, b) => a b); // reduce as normal
console.log(sum_by_col(src, 0));
console.log(sum_by_col(src, 2));
uj5u.com熱心網友回復:
您可以執行以下操作
let text = [[1,'a'],[2,'b']]
let numbers_only = text.flat().filter(x => Number(x))
let sum = numbers_only.reduce((a,b) => a b)
//answer = 3
作為一個單行 -
let sum = text.flat().filter(x => Number(x)).reduce((a,b) => a b)
uj5u.com熱心網友回復:
您可以通過執行以下操作在一行中實作它:
let text = [[1,'a'],[2,'b']]
console.log(
text.flat()
.filter((item) => typeof item === 'number')
.reduce((total, item) => total item)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/449469.html
標籤:javascript 数组 谷歌应用脚本
下一篇:如何使用帶有`application/x-www-form-urlencoded`的`UrlFetchApp.fetch`發布一組值?
