非常に単純な質問で申し訳ございません。
Javascript上、配列型の中に関数を入れることは誤った記法でしょうか。
①下記、なぜそのよう方法で配列に入れるのかは置いておいたとして、記法自体は誤りでしょうか?
var A= 5; var B= 10; var data =[document.write(A+","+B)];
②また、配列の中身を変数にしたい場合には(サーバーサイドから必要な情報を条件に合わせて代入する)はJacascriptの場合、通常どのように記載するものでしょうか?本当にまだまだ不案内なのですが、scriptタグ内にphpでSQL文を書くべきなのか、それともnode.js等で対応するのか基本的な点がまだわかりません。
*現在Chart.jsというものを使っているのですが、サーバーから情報を引っ張り、動的にグラフを作りたいのですが、javascriptが全くの初心者のため、どのように一般的に対応するのかがわかりません、、
低い水準の質問であることは重々承知をしておりますが
お力添えのほど、よろしくお願い申し上げます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
① , ② ともすでに回答がでてますが、
配列の中身を関数にするJavaScriptの記載方法
について、利用例を提示します。
問題:
2つの数をあたえられたら、和、差、積、商を計算するとします。
解法:
- その1
javascript
1function calcs(a, b) { 2 return[a + b, a - b, a * b, a / b]; 3} 4console.log (calcs(10, 2));
- その2
配列に関数を入れるようにして、次のように書くこともできます。
javascript
1function add(x, y) { return x + y; } 2function sub(x, y) { return x - y; } 3function mul(x, y) { return x * y; } 4function div(x, y) { return x / y; } 5function calcsX(ops, a, b) { 6 return ops.map(function(elem) { return elem(a, b);}); 7 // map() がわからなければ、次のように書いても同じです。 8 // var ans = []; 9 // for (var i = 0; i < ops.length; i++) { 10 // ans.push (ops[i](a, b)); 11 // } 12 // return ans; 13} 14console.log (calcsX([add, sub, mul, div], 10, 2));
計算結果の順番変更、計算方法の追加、削除をしたい場合、
1 番目の方法では、cakcs() の中身を書き換えるか必要があります。
2 番目の方法では、calcX() の呼び出す時の ops の配列を変更するだけで済みます。
変更例:
足し算と掛け算の結果だけを返すように変更する。
- その1
javascript
1function calcs2(a, b) { 2 return[a + b, a * b]; 3} 4console.log (calcs2(10, 2));
- その2
javascript
1console.log (calcsX([add, mul], 10, 2));
add(), mul() を定義せず、直接 配列に関数を代入することもできます。
javascript
1ops = [ 2 function(a,b) { return a + b;}, 3 function(a,b) { return a * b;} 4]; 5console.log (calcsX(ops, 10, 2));
投稿2016/05/08 07:32
総合スコア22324
0
①記法自体は誤りでしょうか?
エラーは出ませんが、関数を配列に入れているのではなく、document.write(A+","+B)
の結果(画面に5,10が出力され、この関数は返り値が無いため undefined
)が入ります。
関数を入れるのであれば下記のようにも書けます。
JavaScript
1var c = 5, d = 10; 2var data = [ function( a, b ){ document.write( a + ',' + b ) } ]; 3data[ 0 ]( c, d ); // 「5,10」がHTMLに出力される
投稿2016/05/08 05:38
総合スコア69400
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/08 06:00
2016/05/08 06:11
2016/05/08 06:20
0
ご回答頂き、誠に有難うございます。
ご記載頂いた
data(A,B)
とは、何を意味している文になりますでしょうか?
度々、恐れ入りますが
よろしくお願い申し上げます。
投稿2016/05/08 05:08
総合スコア317
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/08 05:12
2016/05/08 05:18
2016/05/08 06:12
0
ベストアンサー
① 記法自体は誤りでしょうか?
→ 間違いではないです。
② 配列の中身を変数にするJavaScriptの記載方法
こんな感じでどうでしょう。
javascript
1var func = function(C, D) { 2 console.log(C+","+D) 3} 4 5var data =[func]; 6 7var A= 5; 8var B= 10; 9data[0](A, B);
投稿2016/05/08 04:51
編集2016/05/08 04:55総合スコア37
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
JavaScript
1var A= 5; 2var B= 10; 3var data = func; 4data(A, B); 5 6function func(a, b){ 7 document.write(a + "," + b); 8}
とか。関数入れるとこはこんな感じでも
JavaScript
1var data = function(a, b){ 2 document.write(a + "," + b); 3};
WebページのJavaScriptにデータを渡す場合、
HTMLをサーバで生成する際に埋め込んでおく方法と
Ajaxで後からとってくる方法がありますかね。
投稿2016/05/08 04:17
編集2016/05/08 04:20総合スコア7458
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/08 05:16
2016/05/08 05:34
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/08 08:52 編集