teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

テキスト修正

2019/05/14 03:18

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -61,4 +61,15 @@
61
61
  true
62
62
  > x
63
63
  2
64
+ > const ary = [0, 10, 20, 30, 40, 50, 60];
65
+ undefined
66
+ > ary
67
+ [ 0, 10, 20, 30, 40, 50, 60 ]
68
+ > ary[[4]]
69
+ 40
70
+ > ary[[4]] = 99
71
+ 99
72
+ > ary
73
+ [ 0, 10, 20, 30, 99, 50, 60 ]
74
+ >
64
75
  ```

3

テキスト修正

2019/05/14 03:18

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  こんにちは
2
2
 
3
- 以下、自分でランダム抽出のコードを書くことからはちょっと離れる回答になります。配列に対する操作で便利なライブラリ [Lodash](https://lodash.com/) を利用すると、 目的とする
3
+ 以下、ランダム抽出のコードを自作することからは離れる回答になります。配列に対する操作で便利なライブラリ [Lodash](https://lodash.com/) を利用すると、 目的とする
4
4
 
5
5
  > ランダムに値を抽出し、かつ、抽出する数も3つか4つ
6
6
 
@@ -15,7 +15,7 @@
15
15
  - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/vuz47e8d/1/](https://jsfiddle.net/jun68ykt/vuz47e8d/1/)
16
16
 
17
17
 
18
- ご自身でランダム抽出のプログラムを書くことは大変よいと思います。そして、ご自身でも書けた上でならば、次は、このような便利なライブラリを使うことを検討してみてもよいかもしれません。
18
+ ご自身でランダム抽出のプログラムを書くことは大変よいと思います。そして、ご自身でも書けた上でならば、次は、このような便利なライブラリを使うことを検討してみてもよいかもしれません。
19
19
 
20
20
  以上参考になれば幸いです。
21
21
 

2

テキスト修正

2019/05/14 03:08

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -37,7 +37,7 @@
37
37
 
38
38
  - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/t0149jrw/1/](https://jsfiddle.net/jun68ykt/t0149jrw/1/)
39
39
 
40
- `random([3,4], 1)` 、 `[3]` または `[4]` という、要素が1個の配列を返します。仮に `[3]` が返ってきたすると、次に
40
+ 上記のコードを実行するときに、まず `random([3,4], 1)` 、 `[3]` または `[4]` という、要素が1個の配列を返します。仮に `[3]` が返ってきたすると、次に
41
41
  ```javascript
42
42
  random(user_array, [3]);
43
43
  ```

1

テキスト修正

2019/05/14 03:03

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -17,4 +17,48 @@
17
17
 
18
18
  ご自身で、ランダム抽出のプログラムを書くことは大変よいと思います。そして、ご自身でも書けた上でならば、次は、このような便利なライブラリを使うことを検討してみてもよいかもしれません。
19
19
 
20
- 以上参考になれば幸いです。
20
+ 以上参考になれば幸いです。
21
+
22
+
23
+ ### 追記
24
+
25
+ ご質問に挙げられている `function random(array, num)` を使えば、
26
+
27
+ ```javascript
28
+ random(user_array, 3 || 4);
29
+ ```
30
+
31
+ と書くことで期待していた動作を、以下によって実現できます。
32
+
33
+ ```javascript
34
+ random(user_array, random([3,4], 1));
35
+ ```
36
+ 以下は、上記を 10回試行するサンプルです。
37
+
38
+ - **動作確認用のサンプル:** [https://jsfiddle.net/jun68ykt/t0149jrw/1/](https://jsfiddle.net/jun68ykt/t0149jrw/1/)
39
+
40
+ `random([3,4], 1)` は、 `[3]` または `[4]` という、要素が1個の配列を返します。仮に `[3]` が返ってきたすると、次に
41
+ ```javascript
42
+ random(user_array, [3]);
43
+ ```
44
+ を実行しようとします。関数`random`の第2引数`num`は、配列ではなく数値を期待しているので、エラーになりそうですが、期待どおりに動きます。これは以下で確認できるような型変換が暗黙に行われるからです。
45
+
46
+ ```
47
+ $ node
48
+ > [4] == 4
49
+ true
50
+ > [4] === 4
51
+ false
52
+ > Number([4])
53
+ 4
54
+ > let x = [4];
55
+ undefined
56
+ > x -- > 0
57
+ true
58
+ > x
59
+ 3
60
+ > x -- > 0
61
+ true
62
+ > x
63
+ 2
64
+ ```