質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

4回答

3375閲覧

加工と処理の違い

aaaaaaaa

総合スコア501

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2016/03/15 11:16

forEach()($.each())は、配列或いは連想配列の値を処理し、map($.map())は、値を加工しますが、
この加工と処理の違いとは何なのでしょうか。加工なら、単純に与えられた値を加算したり除算したりし、
処理なら、値を利用した何かしらの仕組みを作るという認識であっておりますか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

「処理」も「加工」も同じような意味ですね。eachを「処理」、mapを「加工」と表現したのは初めて見ました。誰かが適当に書いた日本語に捕らわれないで、eachmapのそれぞれの動作をちゃんと理解した方が良いと思います。

投稿2016/03/15 13:28

otn

総合スコア84507

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

jQueryのみならず、これらの操作はプログラミング言語の間で Optional とともに語られます。Optional の界隈において、
「加工」は
入力データに"対して"何らかの処理を施し、"出力データを伴う"ものです。
「処理」は
入力データを"元に"何らかの処理を行いますが"出力データを伴いません"。
これは map や each と言った操作を説明する上で、中間操作か終端操作かの違いを意味しています。この観点でいえば質問者の理解は正しいと言えます。

投稿2016/03/15 14:55

編集2016/03/15 17:20
RyogaK

総合スコア86

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

forEachは主に副作用を期待するメソッドであり、mapは副作用なく書けるメソッドである、という風に理解するといいと思います。

javascript

1var arr=[1,2,3]; 2arr.map(function(e){return e*2}); 3//[2,4,6]が返る 4arr.forEach(function(e){return e*2}); 5//undefinedが返る。他の変数に依存しないと結果を返せない。 6var arr2 = []; 7arr.forEach(function(e,i){arr2[i] = e*2}); 8//undefinedが返るが…… 9arr2: 10//arr2は[2,4,6]になる 11//しかし外部に依存しているので、こんなこともあり得る。 12[10,20].forEach(function(e,i){arr2[i] = e*2}); 13arr2; 14//[10,20]ではなく[10,20,6]

参考:副作用 (プログラム) - Wikipedia

投稿2016/03/16 00:47

Lhankor_Mhy

総合スコア36074

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

map : e-words
とある配列の中身を機械的に加工することをmapといいます。
大きな機械(ハンコ)でたい焼きやおまんじゅうのような製品を一度で大量に作る事を指すようです。

基本的に以下が保証されます。

  • inputとoutputの配列の要素数が同じ数であること
  • input→outputの加工の結果、勝手にIndexが書き換わらないこと
  • 全ての要素は同じ処理(関数)で同様に加工されること

JavaScript

1var users = [ 2 {id: 1, name: "aaaaaaaa", score: 72}, 3 {id: 2, name: "miyabi", score: 38}, 4 {id: 3, name: "abe_nana", score: 17} 5]; 6 7var user_names = users.map(function(it){ 8 return it.name; 9}); 10console.log(user_names); 11// ["aaaaaaaa", "miyabi", "abe_nana"]

eachは戻ってくる結果が必要ない場合に使います。

JavaScript

1var users = [ 2 {id: 1, name: "aaaaaaaa", score: 72}, 3 {id: 2, name: "miyabi", score: 38}, 4 {id: 3, name: "abe_nana", score: 17} 5]; 6 7var user_names = users.forEach(function(it){ 8 return it.name; 9}); 10console.log(user_names); 11// undefined

要らないので戻り値は捨てられてundefinedになってることがわかります。
下記のようにAjaxやDOMに影響を与える箇所に投げて終わり…という箇所で使いましょう。

JavaScript

1var users = [ 2 {id: 1, name: "aaaaaaaa", score: 72}, 3 {id: 2, name: "miyabi", score: 38}, 4 {id: 3, name: "abe_nana", score: 17} 5]; 6 7users.forEach(function(it){ 8 var $user = $("<tr></tr>") 9 .append("<td>" + it.id + "</td>") 10 .append("<td>" + it.name + "</td>") 11 .append("<td>" + it.score + "</td>"); 12 $("table.users").append($user); 13});

出来ること自体は完全にmapの劣化ですが、
他のエンジニアとの共同開発の場合に、
処理に着目したmapを使うと他のエンジニアさんが混乱するので是非使い分けて下さい。

投稿2016/03/16 02:50

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問