回答編集履歴

3

filterよりfindの方が一発で取得できることを追記

2020/11/26 09:51

投稿

miyabi_pudding
miyabi_pudding

スコア9555

test CHANGED
@@ -25,3 +25,15 @@
25
25
  const result = test.filter( item => item.id == 1 )[0];
26
26
 
27
27
  ```
28
+
29
+
30
+
31
+ また、上記条件(対象オブジェクトが一個しかないとわかっている)ならば、`filter`よりも、
32
+
33
+ `find`メソッドの方が、一発で取得できるので、そちらの方がいいかと。
34
+
35
+ ```javascript
36
+
37
+ const result = test.find( item => item.id == 1 );
38
+
39
+ ```

2

{が余計に入っていたため、修正

2020/11/26 09:51

投稿

miyabi_pudding
miyabi_pudding

スコア9555

test CHANGED
@@ -22,6 +22,6 @@
22
22
 
23
23
  ```javascript
24
24
 
25
- const result = test.filter( item => { item.id == 1 )[0];
25
+ const result = test.filter( item => item.id == 1 )[0];
26
26
 
27
27
  ```

1

オブジェクト自体を取得する方法を追記。なぜ常に全要素の配列が返るか、少し詳しく追記

2020/11/26 09:43

投稿

miyabi_pudding
miyabi_pudding

スコア9555

test CHANGED
@@ -1,11 +1,27 @@
1
1
  `=`が一個足りません。
2
2
 
3
+ 代入では、`1`を`id`プロパティに代入してしまい、
4
+
3
- 代入では、`1`を入れてしまい、常に**真**となるため、常に全要素の配列を返してしまいます。
5
+ 論理値的には、**常に真**となるため、常に全要素の配列を返してしまいます。
4
6
 
5
7
 
8
+
9
+ なので、下記のように、比較演算を行ってください。
6
10
 
7
11
  ```javascript
8
12
 
9
13
  const result = test.filter((item)=>{return item.id == 1});
10
14
 
11
15
  ```
16
+
17
+
18
+
19
+ また、配列ではなく、対象オブジェクト一個を取得するなら、下記です。
20
+
21
+ (対象オブジェクトが一個しかないことがわかっている限り有効)
22
+
23
+ ```javascript
24
+
25
+ const result = test.filter( item => { item.id == 1 )[0];
26
+
27
+ ```