回答編集履歴

4

テキスト修正

2019/05/14 03:18

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -124,4 +124,26 @@
124
124
 
125
125
  2
126
126
 
127
+ > const ary = [0, 10, 20, 30, 40, 50, 60];
128
+
129
+ undefined
130
+
131
+ > ary
132
+
133
+ [ 0, 10, 20, 30, 40, 50, 60 ]
134
+
135
+ > ary[[4]]
136
+
137
+ 40
138
+
139
+ > ary[[4]] = 99
140
+
141
+ 99
142
+
143
+ > ary
144
+
145
+ [ 0, 10, 20, 30, 99, 50, 60 ]
146
+
147
+ >
148
+
127
149
  ```

3

テキスト修正

2019/05/14 03:18

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 以下、自分でランダム抽出のコードを書くことからはちょっと離れる回答になります。配列に対する操作で便利なライブラリ [Lodash](https://lodash.com/) を利用すると、 目的とする
5
+ 以下、ランダム抽出のコードを自作することからは離れる回答になります。配列に対する操作で便利なライブラリ [Lodash](https://lodash.com/) を利用すると、 目的とする
6
6
 
7
7
 
8
8
 
@@ -32,7 +32,7 @@
32
32
 
33
33
 
34
34
 
35
- ご自身でランダム抽出のプログラムを書くことは大変よいと思います。そして、ご自身でも書けた上でならば、次は、このような便利なライブラリを使うことを検討してみてもよいかもしれません。
35
+ ご自身でランダム抽出のプログラムを書くことは大変よいと思います。そして、ご自身でも書けた上でならば、次は、このような便利なライブラリを使うことを検討してみてもよいかもしれません。
36
36
 
37
37
 
38
38
 

2

テキスト修正

2019/05/14 03:08

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
 
78
78
 
79
- `random([3,4], 1)` 、 `[3]` または `[4]` という、要素が1個の配列を返します。仮に `[3]` が返ってきたすると、次に
79
+ 上記のコードを実行するときに、まず `random([3,4], 1)` 、 `[3]` または `[4]` という、要素が1個の配列を返します。仮に `[3]` が返ってきたすると、次に
80
80
 
81
81
  ```javascript
82
82
 

1

テキスト修正

2019/05/14 03:03

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -37,3 +37,91 @@
37
37
 
38
38
 
39
39
  以上参考になれば幸いです。
40
+
41
+
42
+
43
+
44
+
45
+ ### 追記
46
+
47
+
48
+
49
+ ご質問に挙げられている `function random(array, num)` を使えば、
50
+
51
+
52
+
53
+ ```javascript
54
+
55
+ random(user_array, 3 || 4);
56
+
57
+ ```
58
+
59
+
60
+
61
+ と書くことで期待していた動作を、以下によって実現できます。
62
+
63
+
64
+
65
+ ```javascript
66
+
67
+ random(user_array, random([3,4], 1));
68
+
69
+ ```
70
+
71
+ 以下は、上記を 10回試行するサンプルです。
72
+
73
+
74
+
75
+ - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/t0149jrw/1/](https://jsfiddle.net/jun68ykt/t0149jrw/1/)
76
+
77
+
78
+
79
+ `random([3,4], 1)` は、 `[3]` または `[4]` という、要素が1個の配列を返します。仮に `[3]` が返ってきたすると、次に
80
+
81
+ ```javascript
82
+
83
+ random(user_array, [3]);
84
+
85
+ ```
86
+
87
+ を実行しようとします。関数`random`の第2引数`num`は、配列ではなく数値を期待しているので、エラーになりそうですが、期待どおりに動きます。これは以下で確認できるような型変換が暗黙に行われるからです。
88
+
89
+
90
+
91
+ ```
92
+
93
+ $ node
94
+
95
+ > [4] == 4
96
+
97
+ true
98
+
99
+ > [4] === 4
100
+
101
+ false
102
+
103
+ > Number([4])
104
+
105
+ 4
106
+
107
+ > let x = [4];
108
+
109
+ undefined
110
+
111
+ > x -- > 0
112
+
113
+ true
114
+
115
+ > x
116
+
117
+ 3
118
+
119
+ > x -- > 0
120
+
121
+ true
122
+
123
+ > x
124
+
125
+ 2
126
+
127
+ ```