我怎樣才能找到由數組和數字組成的數組的總和,就像這樣[1,2,3,4,5,6, [7,8,9],10,11,12],13,14,15]我如何找到由數組和數字組成的數組的總和
-2
A
回答
0
您可以使用reduce()
遞歸獲得數組中所有數字的總和。
var arr = [1, 2, 3, [4, 5, 6, [7, 8, 9], 10, 11, 12], 13, 14, 15];
function sum(data) {
return data.reduce(function(r, e) {
return r += !Array.isArray(e) ? e : sum(e)
}, 0)
}
console.log(sum(arr))
0
您可以拼合的數組,然後總結所有的元素,你會正常的陣列。
DEMO(ES6語法)
let arr = [1,2,3,[4,5,6,[7,8,9],10,11,12],13,14,15];
function flatten(arr) {
const flat = [].concat(...arr);
return flat.some(Array.isArray) ? flatten(flat) : flat;
}
//Flatten array, and sum elements
let result = flatten(arr).reduce((a,b) => a + b, 0);
console.log(result);
免責聲明:flatten
摘自:How to flatten nested array in javascript?
1
一個快速和骯髒的遞歸函數找到總:
let array = [1,2,3,[4,5,6,[7,8,9],10,11,12],13,14,15]
let sum = 0;
function incrementSum(inputArray) {
inputArray.forEach(el => {
if (el.length) {
incrementSum(el);
}
else {
sum += el;
}
});
}
incrementSum(array);
console.log(sum);
0
一個簡單的遞歸解決方案:
function isObject(v){ return typeof v === "object" && Boolean(v) }
function plus(a,b){ return a+b }
function sum(v){
\t //deal with Arrays
\t return Array.isArray(v)? v.map(sum).reduce(plus, 0):
\t \t //iterators and ArrayLike Objects
\t \t isObject(v) && isNaN(+v)? Array.from(v, sum).reduce(plus, 0):
\t \t //parse everything else into a number
\t \t +v || 0;
}
var arr = [1,2,3,[4,5,6,[7,8,9],10,11,12],13,14,15];
console.log(sum(arr));
但要小心的是沒有限制的發電機。
.map(sum)
部分處理像子陣列一樣的嵌套結構,並且還將的所有內容解析爲數字;尼姑數值被轉換爲0
。
.reduce(plus, 0)
部分,然後進行實際添加。
isObject(v) && isNaN(+v)
第一部分首先嚐試將此對象轉換爲數字,例如Number
類的實例或實現valueOf
接口並返回數值的其他對象的實例。只有在失敗時,對象纔會被解釋爲迭代器(如果它實現了Symbol.iterator
)或被視爲ArrayLike對象。
相關問題
- 1. 循環遍歷由數字和字符串組成的數組,但返回數字和的總和ActionScript
- 2. 數據表組由總和
- 3. 數字組合的總和
- 4. 柱找到分組數據的總和
- 5. 使用MIPS找到數組的總和
- 6. 找到二維數組的總和java
- 7. Python:查找數組總和
- 8. 數組的總和
- 9. 數組的總和
- 10. 如何查找數組中所有數字的總和?
- 11. 如何從二維數組的列總和中找到數組的最大值
- 12. 左連接,總數和計數組由
- 13. spark數據集組和由總和
- 14. 日期數組到週數組和值的總和
- 15. 如何從n個數組的數組中找到一個數組(數組)的數組(數組),其總和恰好等於(或幾乎等於)數x。
- 16. 如何數組和數組
- 17. python函數來找到數組中的正數的總和
- 18. 創建一個總和給定數字的數組數組
- 19. 在數組中查找計數總和
- 20. 查找數組中的組合總數?
- 21. 找到一組數組中最高總和的算法
- 22. 使用組中的項目總數和數量在組中查找數字
- 23. 在PHP中,從Excel文件生成數組的總和數組
- 24. 如何查找長度可變的數字和數組的總和
- 25. 總和數組值
- 26. 數組列總和
- 27. 在100個數字的數組中找到5個最高數字的總和
- 28. 循環查找數組java的總和
- 29. 查找總和爲0的數組n
- 30. 查找嵌套數組的總和
歡迎來到[so]!在這個網站,你應該嘗試**自己編寫代碼**。後** [做更多的研究](//meta.stackoverflow.com/questions/261592)**如果你有問題,你可以**發佈你已經嘗試**與清楚的解釋是什麼是'工作**並提供[** Minimal,Complete和Verifiable示例**](// stackoverflow.com/help/mcve)。我建議閱讀[問]一個好問題和[完美問題](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。另外,一定要參加[遊覽]並閱讀[this](// meta.stackoverflow.com/questions/347937/)**。 – Badacadabra
一個想法:[壓扁數組](http://stackoverflow.com/q/10865025/218196),然後[求和](http://stackoverflow.com/q/1230233/218196)。將一個問題分解成更小的問題並找出解決方案(這兩個子問題之前都有問題)。 –