したい事
以下のようなjsonデータがあります。
json
1{ 2 "data": [ 3 { 4 "shop": "A", 5 "members": [ 6 "user:a@xxx.com", 7 "user:c@xxx.com" 8 ] 9 }, 10 { 11 "shop": "B", 12 "members": [ 13 "user:a@xxx.com", 14 "user:b@xxx.com" 15 ] 16 } 17 ] 18}
上記jsonデータを元に以下の2種類のデータを生成したいです。
- membersから重複を排除したユーザーのみ格納されている配列(array)
javascript
1newMembers["user:a@xxx.com","user:b@xxx.com","user:c@xxx.com"]
- jsonを元にユーザーが所属しているshopの情報に再変換したデータ
javascript
1newData = { 2 "user:a@xxx.com":[A,B], 3 "user:b@xxx.com":[B], 4 "user:c@xxx.com":[A] 5}
質問
質問1
jsonデータのmembersから重複排除を行うコードを作成しましたが、jsonデータを格納しているr
という変数以外にmembers
とnewMembers
という変数を生成しており、もしrのデータが大きくなっていくと現在のコードではメモリー使用量的にあまりスマートではないように思えました。もし、他に良いアイディアがあればご教示頂きたいです。
var r = { "data": [ { "shop": "A", "members": [ "user:a@xxx.com", "user:c@xxx.com" ] }, { "shop": "B", "members": [ "user:a@xxx.com", "user:b@xxx.com" ] } ] }; var members = []; for (var i =0; i < r.data.length; i++) { members = members.concat(r.data[i]["members"]) } newMembers = [...new Set(members)] console.log(newMembers)
質問2
jsonからnewData
に変換するスマートなコードが思い浮かばず、悩んでおります。
なにか良いアイディアがあればご教示頂けますでしょうか。
json
1{ 2 "data": [ 3 { 4 "shop": "A", 5 "members": [ 6 "user:a@xxx.com", 7 "user:c@xxx.com" 8 ] 9 }, 10 { 11 "shop": "B", 12 "members": [ 13 "user:a@xxx.com", 14 "user:b@xxx.com" 15 ] 16 } 17 ] 18}
javascript
1newData = { 2 "user:a@xxx.com":[A,B], 3 "user:b@xxx.com":[B], 4 "user:c@xxx.com":[A] 5}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/19 02:41