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

回答編集履歴

3

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

2020/11/26 09:51

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -11,4 +11,10 @@
11
11
  (対象オブジェクトが一個しかないことがわかっている限り有効)
12
12
  ```javascript
13
13
  const result = test.filter( item => item.id == 1 )[0];
14
+ ```
15
+
16
+ また、上記条件(対象オブジェクトが一個しかないとわかっている)ならば、`filter`よりも、
17
+ `find`メソッドの方が、一発で取得できるので、そちらの方がいいかと。
18
+ ```javascript
19
+ const result = test.find( item => item.id == 1 );
14
20
  ```

2

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

2020/11/26 09:51

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -10,5 +10,5 @@
10
10
  また、配列ではなく、対象オブジェクト一個を取得するなら、下記です。
11
11
  (対象オブジェクトが一個しかないことがわかっている限り有効)
12
12
  ```javascript
13
- const result = test.filter( item => { item.id == 1 )[0];
13
+ const result = test.filter( item => item.id == 1 )[0];
14
14
  ```

1

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

2020/11/26 09:43

投稿

miyabi_pudding
miyabi_pudding

スコア9559

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