回答編集履歴

7

2022/10/25 16:44

投稿

退会済みユーザー
test CHANGED
@@ -31,7 +31,7 @@
31
31
  ```
32
32
 
33
33
  または、
34
- ```
34
+ ```js
35
35
 
36
36
  const result2 = [...items.filter(v => v !== target), ...items.filter(v => v === target)];
37
37
 

6

2022/10/25 16:44

投稿

退会済みユーザー
test CHANGED
@@ -30,5 +30,13 @@
30
30
  console.log(result);
31
31
  ```
32
32
 
33
+ または、
34
+ ```
35
+
36
+ const result2 = [...items.filter(v => v !== target), ...items.filter(v => v === target)];
37
+
38
+ console.log(result2)
39
+ ```
33
40
 
34
41
 
42
+

5

 

2022/10/25 16:40

投稿

退会済みユーザー
test CHANGED
@@ -22,12 +22,13 @@
22
22
  ---
23
23
 
24
24
  短くするなら下記のようになるでしょうか。
25
- (そもそも取り出す要素がわかっているなら、あえてその要素を配列として取り出す必要もない気がします)
26
25
  ```js
27
26
  const items = ['ああ','あい','さく','とり'];
28
27
  const target = 'あい';
29
- const result = [...items.filter(v => v !== target), target];
28
+ const result = items.includes(target) ? [...items.filter(v => v !== target),target] : items;
30
29
 
31
30
  console.log(result);
32
31
  ```
33
32
 
33
+
34
+

4

 

2022/10/25 16:37

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- スマートな書き方の直接的な回答ではなく、なぜ質問のコードでは期待通りの結果にならないかについて
1
+ スマートな書き方の直接的な回答ではなく、なぜ質問のコードでは期待通りの結果にならないかについてですが、
2
2
  push の戻り値は、要素を追加した後の配列ではなく、メソッドが呼び出されたオブジェクトの新しい length プロパティです。
3
3
 
4
4
  https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/push
@@ -6,7 +6,7 @@
6
6
  result.push(aaa);
7
7
  の段階で result の要素の個数は 4個になるので、戻り値は 4 になります。
8
8
  結果、元のコードでは ddd に 4 が入っています。
9
- 要素はresult の方に追加されているので、resultをそのまま使いす。
9
+ 要素は result の方に追加されているので、ddd のように戻り値を受ける必要はなく result をそのまま使えばよす。
10
10
 
11
11
  ただし、aaaは配列(['あい'])なので、スプレッド構文を使う等して配列をばらす必要があります。
12
12
  ```js
@@ -19,6 +19,8 @@
19
19
  result.push(...aaa);
20
20
  console.log('result', result);
21
21
  ```
22
+ ---
23
+
22
24
  短くするなら下記のようになるでしょうか。
23
25
  (そもそも取り出す要素がわかっているなら、あえてその要素を配列として取り出す必要もない気がします)
24
26
  ```js

3

 

2022/10/25 16:34

投稿

退会済みユーザー
test CHANGED
@@ -19,4 +19,13 @@
19
19
  result.push(...aaa);
20
20
  console.log('result', result);
21
21
  ```
22
+ 短くするなら下記のようになるでしょうか。
23
+ (そもそも取り出す要素がわかっているなら、あえてその要素を配列として取り出す必要もない気がします)
24
+ ```js
25
+ const items = ['ああ','あい','さく','とり'];
26
+ const target = 'あい';
27
+ const result = [...items.filter(v => v !== target), target];
22
28
 
29
+ console.log(result);
30
+ ```
31
+

2

 

2022/10/25 16:30

投稿

退会済みユーザー
test CHANGED
@@ -1,8 +1,14 @@
1
+ スマートな書き方の直接的な回答ではなく、なぜ質問のコードでは期待通りの結果にならないかについて。
1
- push の戻り値は、メソッドが呼び出されたオブジェクトの新しい length プロパティです。
2
+ push の戻り値は、要素を追加した後の配列ではなく、メソッドが呼び出されたオブジェクトの新しい length プロパティです。
3
+
2
4
  https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/push
5
+
3
6
  result.push(aaa);
4
7
  の段階で result の要素の個数は 4個になるので、戻り値は 4 になります。
8
+ 結果、元のコードでは ddd に 4 が入っています。
9
+ 要素は、result の方に追加されているので、resultをそのまま使います。
10
+
5
- さらに、aaaは配列なので、スプレッド構文を使う等して配列をばらす必要があります。
11
+ ただし、aaaは配列(['あい'])なので、スプレッド構文を使う等して配列をばらす必要があります。
6
12
  ```js
7
13
  const items = ['ああ','あい','さく','とり'];
8
14
  // 'あい'だけを取り出した変数を作成

1

 

2022/10/25 16:23

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- push の戻り値は、追加後配列内の要素数です。
1
+ push の戻り値は、メソッドが呼び出されたオブジェクト新しい length プロパティです。
2
2
  https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/push
3
3
  result.push(aaa);
4
4
  の段階で result の要素の個数は 4個になるので、戻り値は 4 になります。