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

質問編集履歴

4

タイトル変更

2018/07/13 00:18

投稿

MeB
MeB

スコア104

title CHANGED
@@ -1,1 +1,1 @@
1
- underscore.jsの_.where()で同じキーの異なる値を取り出したい
1
+ jsで同じキーの異なる値を取り出したい
body CHANGED
File without changes

3

追記

2018/07/13 00:18

投稿

MeB
MeB

スコア104

title CHANGED
File without changes
body CHANGED
@@ -106,4 +106,10 @@
106
106
  ```
107
107
  など試しましたがエラーなどで何も表示されないか最初に来たキーの値の分しか取れませんでした
108
108
 
109
- ご教示を宜しくお願いします。
109
+ ご教示を宜しくお願いします。
110
+
111
+ 追記
112
+ underscore.jsを使用していますが、
113
+ 使わないでこうした方が簡単だぞ。というものがあればご教示をお願いします。
114
+ js自体あまり使用したことがないため頼ろうとしたのが使用の理由です。(結局つまずいていますが…)
115
+ 厚がましいですが回答依頼させていただきました。よろしくお願いします。

2

訂正

2018/07/13 00:09

投稿

MeB
MeB

スコア104

title CHANGED
File without changes
body CHANGED
@@ -9,34 +9,60 @@
9
9
  "test":[
10
10
  {
11
11
  "id": 1,
12
- "name":"aaa",
12
+ "type":"aaa",
13
+ "color":"red"
13
14
  },
14
15
  {
15
16
  "id": 2,
16
- "name":"bbb"
17
+ "type":"aaa",
18
+ "color":"red"
17
19
  },
18
20
  {
19
21
  "id": 3,
20
- "name":"ccc"
22
+ "type":"bbb",
23
+ "color":"red"
21
24
  },
22
25
  {
23
26
  "id": 4,
24
- "name":"ddd",
27
+ "type":"bbb",
28
+ "color":"blue"
25
29
  },
26
30
  {
27
31
  "id": 5,
28
- "name":"eee"
32
+ "type":"bbb",
33
+ "color":"blue"
29
34
  }
30
35
  ]
31
36
  }
32
37
  ```
33
- 下記の"query"の部分に
34
- {name:"eee"}
35
- など入れると正常に処理されるのですが、
36
- やりたいことは
38
+ 下記コードの
37
- "name":"eee"、"name":"aaa"など同じキーで異なる値が来た場合でも該当のデータを取り出したいです。
38
- しかし、どうしても最初の一つしか取れず困っております。
39
39
 
40
+ var results = _.where(dataArray, query);
41
+
42
+ を通す際にqueryに
43
+ "type":"aaa" が来た場合は
44
+
45
+ {"id": 1,"type":"aaa","color":"red"},
46
+ {"id": 2,"type":"aaa","color":"red"},
47
+
48
+ が取れる。
49
+
50
+ "color":"red"と"color":"blue"が来た場合、
51
+
52
+ {"id": 1,"type":"aaa","color":"red"},
53
+ {"id": 2,"type":"aaa","color":"red"},
54
+ {"id": 3,"type":"bbb","color":"red"},
55
+ {"id": 4,"type":"bbb","color":"blue"},
56
+ {"id": 4,"type":"bbb","color":"blue"}
57
+
58
+ が取れる。
59
+ 上記のような感じでどれか一つでも当てはまって入れば該当データの全要素を取得するようにしたいのですが、
60
+
61
+ "color":"red"と"color":"blue"のように同じキーで異なる値が来た場合だと
62
+ "color":"red"(idでいうと1,2,3)のデータしか取得できません。
63
+
64
+ どうしても最初の一つしか取れず困っております。
65
+
40
66
  ```js
41
67
  // dataArrayにはjsonファイルの中身が入っています
42
68
  var results = _.where(dataArray, query);
@@ -74,10 +100,10 @@
74
100
  ### 試したこと
75
101
 
76
102
  ```js
77
- var results = _.where(dataArray, {name:"aaa,eee"});
103
+ var results = _.where(dataArray, {type:"aaa,bbb"});
78
- var results = _.where(dataArray, {name:"aaa","eee"});
104
+ var results = _.where(dataArray, {type:"aaa","bbb"});
79
- var results = _.where(dataArray, {name:"eee"},{name:"eee"});
105
+ var results = _.where(dataArray, {type:"aaa"},{type:"bbb"});
80
106
  ```
81
- など試しましたがエラーか最初の値しか取れませんでした
107
+ など試しましたがエラーなどで何も表示されないか最初に来たキーの値の分しか取れませんでした
82
108
 
83
109
  ご教示を宜しくお願いします。

1

訂正

2018/07/12 13:16

投稿

MeB
MeB

スコア104

title CHANGED
File without changes
body CHANGED
@@ -9,8 +9,7 @@
9
9
  "test":[
10
10
  {
11
11
  "id": 1,
12
- "name":"UQ WiMAX",
13
- "period":"aaa"
12
+ "name":"aaa",
14
13
  },
15
14
  {
16
15
  "id": 2,