オブジェクトの中のキーの存在の有無でフィルタリングを行いたい。

前提

複数のスタッフオブジェクトに付加される属性情報をオブジェクトで
作成しています。
一応目的とするフィルタリングはできたのですが、すごく遠回りしているように
思っております。

実現したいこと

複数のスタッフに対する属性をオブジェクトで付加しているのですが
その属性キーがあるか無いかで新しいオブジェクトとして再構成したいと
考えております。

発生している問題・エラーメッセージ

一応目的にはたどり着いたのですが、コードが回りくどい(正しくない使い方)ように思っております。
具体的にはmapでの処理でif文で、不要なオブジェクトがreturnされてほしくないのですが、
なぜかstaffA などがundefinedで戻ってくるため、処理した後の配列checkedArr から、undefinedをfilter()で取り除くという処理をしています。

正しい書き方を教えていただければとおもいご質問させていただきました。

該当のソースコード

それぞれのstaffオブジェクトで属性として「b」を「保有していない」staffのみ抽出

javascript

const obj ={staffA:{a:1,b:1},staffB:{a:2},staffC:{a:3,b:3,c:3},staffD:{a:4}} let checkedArr = Object.keys(obj).map((item)=>{ if(!obj[item].b){ return [item,obj[item]] }})let newArr=checkedArr.filter((element) => element !== undefined)let newObj = Object.fromEntries(newArr)console.log(newObj)

output

{staffB:{a:2},staffD:{a:4}}

お手数おかけいたしますが、ご指導いただければ幸いです。
よろしくお願いいたします。

コメントを投稿

0 コメント