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

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

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

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

Q&A

解決済

5回答

1690閲覧

Javascriptの配列型

SugiuraY

総合スコア317

JavaScript

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

0グッド

0クリップ

投稿2016/05/08 04:00

非常に単純な質問で申し訳ございません。
Javascript上、配列型の中に関数を入れることは誤った記法でしょうか。
①下記、なぜそのよう方法で配列に入れるのかは置いておいたとして、記法自体は誤りでしょうか?

var A= 5; var B= 10; var data =[document.write(A+","+B)];

②また、配列の中身を変数にしたい場合には(サーバーサイドから必要な情報を条件に合わせて代入する)はJacascriptの場合、通常どのように記載するものでしょうか?本当にまだまだ不案内なのですが、scriptタグ内にphpでSQL文を書くべきなのか、それともnode.js等で対応するのか基本的な点がまだわかりません。
*現在Chart.jsというものを使っているのですが、サーバーから情報を引っ張り、動的にグラフを作りたいのですが、javascriptが全くの初心者のため、どのように一般的に対応するのかがわかりません、、

低い水準の質問であることは重々承知をしておりますが
お力添えのほど、よろしくお願い申し上げます。

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

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

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

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

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

guest

回答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

katoy

総合スコア22324

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

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

SugiuraY

2016/05/08 08:52 編集

ご回答頂き有難うございます。 その2は少し私も勉強はしてからでなければ、未だ分からない部分がございます。その1についてですが、returnのあとに[]で記述すること事で、このfunctionは、常に配列を返す様に働くことになるのでしょうか? どの部分が配列を返す仕組になっていれのかが、直感的に正直わかりません。 return[]としているからこそ、console.logでもどのような関数でも、そのfunctionを呼び出し引数を指定すれば、配列をかえしてくれるという事になるのでしょうか?それとも、例えばconsole.logそのものに配列を返す機能がふくまれているのでしょうか。 非常に分かりづらい文面で誠に申し訳ございませんが、何卒宜しくお願い申し上げます。
guest

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

kei344

総合スコア69400

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

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

SugiuraY

2016/05/08 05:52 編集

ご回答頂き有難うございます。 返り値は5,10になるのではないでしょうか?また、HTMLに5,10を出力したいというよりも、javascript上の配列に5,10を順番に格納したい《data[5,10]を作りたい》というところが目的なのですが、《従って、無理やり[]の中に、php的な感覚でdocument.writeを入れてみました》が如何でしょうか? 宜しくお願い申し上げます。
kei344

2016/05/08 06:00

document.write は 「document」に「write」する関数です。そのため、HTMLに出力する以外に返り値を持ちません。PHPでも var data = [ echo( 5, 10 ) ]; とは書かないと思います。 配列 [5,10] を作りたければ、var data = [ 5, 10 ]; とすれば良いです。
SugiuraY

2016/05/08 06:11

ご回答頂き有難うございます。document.writeに関して大変、納得致しました。 この5,10の数値がサーバーから条件により変化するために、この度[]の中に単純に数値を入れずに中に関数等を入れようと思った次第でございます。 なので、直接数値型を入れない場合のやり方に奮闘をしておりました。
kei344

2016/05/08 06:20

「PHPから出力するHTMLのJavaScriptに値を渡す方法」をお探しでしょうか。PHPの出力部分および「出力結果として欲しいHTML&JavaScript」を提示されれば、回答を得られやすいと思います。
guest

0

ご回答頂き、誠に有難うございます。
ご記載頂いた
data(A,B)
とは、何を意味している文になりますでしょうか?

度々、恐れ入りますが
よろしくお願い申し上げます。

投稿2016/05/08 05:08

SugiuraY

総合スコア317

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

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

takasima20

2016/05/08 05:12

これは自分宛ですかね? 自分の回答にコメントしときます。
SugiuraY

2016/05/08 05:18

あ、すみません、funcの引数部分に代入しているという事ですね。。 失礼致しました。
SugiuraY

2016/05/08 06:12

失礼致しました。使い慣れておらず、申し訳ございません。
guest

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
hitomatagi

総合スコア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
takasima20

総合スコア7458

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

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

takasima20

2016/05/08 05:16

上の例では、通常以下のように使います。 func(A, B); ここで、dataに関数が入ってるので data(A, B); としても同じ意味になります。 ついでに Olympic2020さんの例でいうと data[0](A, B); も同じ意味になります。(この場合は関数が配列に 入ってるのでこういう書き方になるということです) 自分の場合は、配列に入れたいわけじゃないのかなあ と解釈して、ああいう書き方としました。
SugiuraY

2016/05/08 05:34

非常にわかりやすいご記載を頂き有難うございます。 本当に有難いです。改めて、 深謝を申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問