[解決済み] mapとreduceの主な違い
2022-10-19 11:26:36
質問
両方のメソッドを使いましたが、使い方がよくわかりません。
何か
map
ができることですが
reduce
はできない、逆は?
注:私は両方のメソッドの使用方法を知っていますが、これらのメソッドの主な違いと使用する必要がある場合について質問しています。
どのように解決するのですか?
<ブロッククオート
両方
map
と
reduce
は,入力として配列と定義した関数を持っています。これらはある意味で相補的である。
map
は複数の要素からなる配列に対して一つの要素を返すことはできませんが
reduce
は常に最終的に変更したアキュムレータを返します。
map
使用方法
map
を使って、要素を反復し、各要素に対して必要な要素を返します。
例えば、数字の配列があり、その二乗を取得したい場合、次のようにします。
// A function which calculates the square
const square = x => x * x
// Use `map` to get the square of each number
console.log([1, 2, 3, 4, 5].map(square))
reduce
配列を入力として使用すると、コールバック関数(第一引数)をもとに、一つの要素(例えばオブジェクト、数値、あるいは別の配列)を取得することができます。
accumulator
と
current_element
というパラメータがあります。
const numbers = [1, 2, 3, 4, 5]
// Calculate the sum
console.log(numbers.reduce(function (acc, current) {
return acc + current
}, 0)) // < Start with 0
// Calculate the product
console.log(numbers.reduce(function (acc, current) {
return acc * current
}, 1)) // < Start with 1
両方で同じことができる場合、どちらを選ぶべきでしょうか?コードがどのように見えるか想像してみてください。提供された例では、あなたが言ったように平方行列を計算することができます。
reduce
:
// Using reduce
[1, 2, 3, 4, 5].reduce(function (acc, current) {
acc.push(current*current);
return acc;
}, [])
// Using map
[1, 2, 3, 4, 5].map(x => x * x)
さて、これらを見ると、明らかに2番目の実装の方が見栄えが良く、短くなっています。通常、よりクリーンな解決策を選びますが、この場合は
map
. もちろん
reduce
でもよいのですが、要するに、どちらが短いか、結局はどちらがよいかを考えてみてください。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] event.preventDefault() vs. return false
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] javascript includes() 大文字小文字を区別しない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?