回答編集履歴

3

for_future

2018/10/31 01:49

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -46,7 +46,65 @@
46
46
 
47
47
  return array_data1
48
48
 
49
+ }
49
50
 
51
+ ```
52
+
53
+
54
+
55
+ ---
56
+
57
+
58
+
59
+ コードとコードから推測したやりたいことからすると、こういうやりかたがいいのではないでしょうかという提案を。
60
+
61
+ functionによって変数のスコープが決まるので、makeit側でarray_data1とかって名前をつけても無意味。結局は、makeitの呼び出し側・array_data1の利用側で、変数iを使って変数array_data1を指せる必要がある。
62
+
63
+ →呼び出し側でevalするか、呼び出し側のthisを渡すか、の手当が必要になってくる。
64
+
65
+ かといって、1個じゃないから悩んでいるはずで、呼び出し側で、evalはできないと想像する
66
+
67
+
68
+
69
+ 質問コードのmyFunctionでarray_data1と書いているけれど、`("array_data"+i).push(some)`みたいな使い方はどうやったってできないのだから、質問が解決できても無意味なんじゃないでしょうか。あらかじめコードで変数名を指定できるってことは個数が分かっているということでしょう?動的に増やす意味がない。
70
+
71
+ そりゃ`eval("tmp = array_data"+i+"[1]");`とかやればできなくはないのでしょうが、全部のコードをevalで進行していくのはつらいのではないでしょうか。コードに色がつかないからtypoにも気付けない。
72
+
73
+
74
+
75
+ 利用側で変数を使って変数にアクセスできる、というのはobjectで解決できるし、外で任意の個数作らせるということも考えると、やりたいインデクサでアクセスできるobjectをもらったほうがいいのではないだろうか、と考えました。
76
+
77
+ このパターンなら、下記を後からobjectにarray_data5を足すことを想定したコードに書きかえるのは難しくないと思います。
78
+
79
+
80
+
81
+ ただ、こうやってくると、最初から、array_data[i][j]で良くないですか、って話になって、それが最初の追記
82
+
83
+
84
+
85
+ ```javascript
86
+
87
+ function trialGiveMeArrays() {
88
+
89
+ const dataSet = giveMeArrays(4);
90
+
91
+ const two = 2;
92
+
93
+ dataSet["array_data"+two].push(3);
94
+
95
+ Logger.log(dataSet);
96
+
97
+ Logger.log(dataSet["array_data"+two]);
98
+
99
+ }
100
+
101
+ function giveMeArrays(nanko) {
102
+
103
+ const keys = [];
104
+
105
+ for(i = 1; i <= nanko; i++) {keys.push("array_data"+i);}
106
+
107
+ return keys.reduce(function(prev,curr){ prev[curr] = [0];return prev;}, {});
50
108
 
51
109
  }
52
110
 

2

future

2018/10/31 01:48

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -51,3 +51,11 @@
51
51
  }
52
52
 
53
53
  ```
54
+
55
+
56
+
57
+ -- 将来ご覧になる方へ
58
+
59
+ 特定の用途、要件があってやむなくこうしようとしているものと思われます。
60
+
61
+ 配列が増やしたいなら、端的に2次元配列を作ればよいと思うので、一般論としては参考にしないでください。

1

ed

2018/10/30 23:11

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -1,4 +1,4 @@
1
- できますよ、ただのtypo
1
+ できますよ、typoに気をつけてください
2
2
 
3
3
  ```javascript
4
4