回答編集履歴
7
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
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
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),
|
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
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
|
-
要素は
|
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
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
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
|
-
|
11
|
+
ただし、aaaは配列(['あい'])なので、スプレッド構文を使う等して配列をばらす必要があります。
|
6
12
|
```js
|
7
13
|
const items = ['ああ','あい','さく','とり'];
|
8
14
|
// 'あい'だけを取り出した変数を作成
|
1
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 になります。
|