配列[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);
免責事項:合計を見つけるために、How to flatten nested array in javascript?
1
迅速かつ汚い再帰関数:から取らflatten
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. C++ - 配列に値を入れて(その和を求める)
- 2. 配列の構造はどうすればいいですか?
- 3. (配列の)配列の動的配列を作成するにはどうすればよいですか?
- 4. objective-cの文字列の配列の数値の和を求めるには?
- 5. セル配列をMATLABの数値配列に変換するにはどうすればよいですか?
- 6. CodeIgniterの結果配列を数値配列に変換するにはどうすればよいですか?
- 7. デフォルト値配列と新しい値配列を使用して配列を生成するにはどうすればよいですか?
- 8. 構造体の配列をPoint3Dの配列に変換するにはどうすればよいですか?
- 9. 既存のnumpy配列を構造化配列にするにはどうすればよいですか?
- 10. 構造体に配列のバイト配列をマーシャリングするにはどうすればよいですか?
- 11. Excelで配列のテキストにブール値の配列を掛けるにはどうすればよいですか?
- 12. 配列に新しい数値を含めるにはどうすればいいですか(C++)?
- 13. NumPyで(配列の配列の)配列の配列の軸の値を変更するにはどうすればいいですか?
- 14. 文字列と整数を同じ配列に配置するにはどうすればよいですか?
- 15. observablesの配列から配列のobservableを作成するにはどうすればよいですか?
- 16. 値の配列を別のインデックス配列に変換するにはどうすればよいですか?
- 17. 配列の配列から値を取得するにはどうすればよいですか?
- 18. PHP配列からJavascript配列に値を取得するにはどうすればよいですか?
- 19. 配列の要素を別の配列に含めるにはどうすればよいですか?
- 20. 各値が配列でも配列を反転するにはどうすればよいですか?
- 21. 配列内の正の数の和を求めるpython関数
- 22. 入れ子配列から内部配列を抽出するにはどうすればいいですか?
- 23. 配列の配列に内部配列内の値があるかどうかを確認するにはどうすればよいですか?
- 24. PHPの配列の和、配列ファイルから生成された配列
- 25. 小さい配列の値が大きい配列にあるかどうかを確認するにはどうすればよいですか?
- 26. JSON配列をキー値配列に変換するにはどうすればよいですか?
- 27. 整数値をchar配列に配置するにはどうすればよいですか?私は番号1234をchar配列に入れたい。
- 28. 配列値をマージするにはどうすればよいですか?
- 29. 1次元配列を複数の配列に分割するにはどうすればよいですか?
- 30. JSON:配列を複数の配列にするにはどうすればよいですか?
[so]へようこそ!このサイトでは、自分でコードを書くことができます**。 ** [もっと研究をして](// meta.stackoverflow.com/questions/261592)**あなたが問題を抱えていると、あなたが試みたものを投稿することができます** (** stackoverflow.com/help/mcve)を提供しています。私は良い質問と[完璧な質問]を読むことをお勧めします(http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)。また、[ツアー]を取って** [this](// meta.stackoverflow.com/questions/347937/)**を必ず読んでください。 – Badacadabra
1つのアイデア:[配列を平坦化する](http://stackoverflow.com/q/10865025/218196)、次に[合計](http://stackoverflow.com/q/1230233/218196)。問題をより小さな問題に分割し、それらの解決策を見出す(両方のサブ問題が前にSOに質問されている)。 –