連想配列の中の連想配列から条件に合うものだけ抽出する方法

連想配列の中の連想配列から条件に合うものだけ抽出する方法:

初 Qiita 投稿です!

以下のような JSON データがあるとします。
orange をもつ人物のみを抽出して新しい配列をつくりたい、という場合。

(ほしい結果 → "hanako"と"ichiro"をゲッチュしたい)

const hogehoge = [ 
 { name: "hanako",  
   items: [ 
      { id: 1,  
        type: "melon" 
      }, 
      { id: 2,  
        type: "orange" 
      }, 
      { id: 3,  
        type:"apple" 
      } 
    ] 
   }, 
 { name: "taro", 
   items: [ { id: 6, type: "banana" }, { id: 7, type: "strawberry" } ] 
 }, 
 { name: "ichiro", 
   items: [ { id: 10, type: "orange" }, { id: 14, type: "peach" } ] 
 } 
]; 
 
(2018/12/16 20:32追記)

コメントでスマートなやり方を教えていただきました!ありがとうございます!!
Array.prototype.filterArray.prototype.find の合わせ技です。

const target_hoge = hogehoge.filter(({items}) => 
   items.find(({type}) => type === "orange") !== undefined); 
 
console.log(target_hoge); // [{ name: "hanako", items:[省略] }, { name: "ichiro", 省略 }]; 
 
コメントをいただく前に記載していたもの↓

Array.prototype.find を2回使うというやり方で対応していました。

const target_hoge = hogehoge.filter(hoge => { 
  const target_item = hoge.items.filter(item => item.type === "orange"); 
  return target_item.length > 0; 
  } 
); 
 
console.log(target_hoge); // [{ name: "hanako", items:[省略] }, { name: "ichiro", 省略 }]; 
 



初めての投稿なのでご意見くださると嬉しいです!

「もっといいやり方あるよ〜」や、

「ここで書くと読みやすいよ〜」などなど!

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2024-02-12 22:08:06 RSSフィード2024-02-12 22:00分まとめ(7件)