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

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

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

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

Q&A

解決済

5回答

1811閲覧

特殊な配列の呼び出し方をしたい

828kk88

総合スコア61

JavaScript

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

0グッド

1クリップ

投稿2017/02/22 11:08

var num='1'; var fruits1=['apple','banana','orange']; var fruit =(fruits+num)[1];

と言った具合に,fruits1のような名前が英単語と数字でできている配列を呼び出すときに、fruit+numのように英単語と数字を+でつないで呼び出せるようにしたいです(当然上記のコードでは動きません。あくまで例です)
どうすれば実現できるでしょうか?

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

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

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

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

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

guest

回答5

0

ベストアンサー

返答を読んでみて、あなたがやりたいのはこういう事かなと思いました。
無理なアプローチを考えるより、レベル指定で任意の配列を取り出せる関数を作った方が早いです。

javascript

1var fruit = [ 2 ['apple1', 'banana1', 'orange1'], 3 ['apple2', 'banana2', 'orange2'], 4 ['apple3', 'banana3', 'orange3'], 5]; 6 7var getFruit = function(level){ 8 return fruit[level - 1]; 9}; 10 11var level = 1; 12 13console.log(getFruit(level)); // ["apple1", "banana1", "orange1"]; 14 15level++; 16 17console.log(getFruit(level)); // ["apple2", "banana2", "orange2"] 18 19level++; 20 21console.log(getFruit(level)); // ["apple3", "banana3", "orange3"]

投稿2017/02/22 13:10

編集2017/02/22 13:11
yamato_hikawa

総合スコア2092

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

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

Zuishin

2017/02/22 13:39

支持します。
guest

0

こういうことでしょうか?

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>タイトル</title> 6 <style type="text/css"> 7 * { 8 margin: 0; 9 padding: 0; 10 } 11 </style> 12</head> 13<body> 14<script> 15 var num = "1"; 16 var fruits1 = ['apple', 'banana', 'orange']; 17 18 function arr(arr_name1, arr_name2, index) { 19 var array_name = arr_name1 + arr_name2; 20 return (window[array_name][index]); 21 } 22 23 alert(arr("fruits", num, 0));//apple 24 alert(arr("fruits", num, 1));//banana 25 alert(arr("fruits", num, 2));//orange 26</script> 27</body> 28</html>

投稿2017/02/22 11:45

s8_chu

総合スコア14731

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

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

0

オブジェクトにすれば不可能ではありませんけど。。。

javascript

1var fruits1=['apple','banana','orange']; 2var fruits2=['pineapple', 'kiwi', 'melon']; 3var o = {fruits1: fruits1, fruits2: fruits2}; 4var num = 1; 5var fruit1 = o['fruits'+ num][1]; // fruit1 = 'banana'; 6var fruit2 = o['fruits' + (num + 1)][2]; // fruit2 = 'melon';

投稿2017/02/22 11:28

編集2017/02/22 11:36
turbgraphics200

総合スコア4267

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

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

0

evalを使えばできますが、他に良いやり方があるかもしれません。

var fruit=eval('fruits'+num+'[1]'); //'banana'

投稿2017/02/22 11:34

alg

総合スコア2019

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

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

0

こういうことじゃないんですか?

var fruit = fruits[1] + num;

追記

こうかな?

fruits1 = [ "apple", "banana" ]; num = 1; alert(eval("fruits" + num)[1]);

追記

別のアプローチです。
こちらが一般的によく使われます。

fruits = [["apple", "banana"], ["orange", "lemon"]]; fruit = fruits[0][1];

投稿2017/02/22 11:19

編集2017/02/22 12:06
Zuishin

総合スコア28660

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

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

828kk88

2017/02/22 11:29

それだとfruitはapple1になりますよね 自分がやりたいのはfruit1,fruit2,fruit3と配列があったとして、fruitという文字と、変数numの組み合わせで任意の配列を呼び出す、みたいな感じです
Zuishin

2017/02/22 11:31

もちろんそうなります。 仕様がよくわからないのでもう少し詳しく書いてもらえますか?
828kk88

2017/02/22 11:56

クイズゲームを作るとして問題をレベルごとにlevel1,level2,level3という配列に入れるとします。 出題される問題を変数qに入れるとなると、最初はq=level1と書くわけですが、レベル2に上がったときにq=level2とするのが面倒なので、変数lev=1としてq=level+lev書いてレベルが上がるたびにlev++としたいのです
Zuishin

2017/02/22 11:58

q = level[lev] でいいのでは?
828kk88

2017/02/22 12:33

level1,level2,level3は配列の要素ではなくそれぞれ別の配列です
Zuishin

2017/02/22 23:44 編集

はい。 一応参考に levels = [level1, level2, level3]; q = levels[lev];
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問