亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 lodash 迭代內部對象

使用 lodash 迭代內部對象

慕少森 2022-12-18 15:41:48
這是我的 JSON 對象:{"id": 2,"full_name": "Karan Kumar","user_skills": [   {      "skill_id": 1,      "skill": {          "skill_name": "Angular 8"       }   },   {      "skill_id": 3,      "skill": {          "skill_name": "Java Spring"       }    }],"resource_allocateds": [  {     "project_id": 1,     "end_date": "2019-06-20",     "project": {         "project_name": "Inventory System"      }  },  {      "project_id": 2,      "end_date": "2020-01-15",      "project": {           "project_name": "Hospital Management System"       }    }  ]}我想從上面的 JSON 中選擇某些屬性,并且我希望它是這樣的:{    "id": 1,    "full_name": "Karan Kumar",    "skills": [{        "skill_id": 1,        "skill_name": "Angular 8"    },    {        "skill_id": 3,       "skill_name": "Java Spring"    }],    "resource_allocateds": [{        "project_id": 1,        "end_date": "2019-06-20",        "project_name": "Inventory System"    },    {        "project_id": 2,        "end_date": "2020-01-15",        "project_name": "Hospital Management System"    }]}我試過使用 Lodash's partialRight,但它似乎不適用于可迭代對象,也嘗試過 flatMap,但沒有用。如果有人幫助我解決這個問題,那就太好了。提前致謝!
查看完整描述

2 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

你可以使用 vanilla javascript 而不是 Lodash 來做到這一點。尋找像 map/reduce/filter 這樣的 ES6 方法。例子 :


const input = {

"id": 2,

"full_name": "Karan Kumar",

"user_skills": [

   {

      "skill_id": 1,

      "skill": {

          "skill_name": "Angular 8"

       }

   },

   {

      "skill_id": 3,

      "skill": {

          "skill_name": "Java Spring"

       }

    }

],

"resource_allocateds": [

  {

     "project_id": 1,

     "end_date": "2019-06-20",

     "project": {

         "project_name": "Inventory System"

      }

  },

  {

      "project_id": 2,

      "end_date": "2020-01-15",

      "project": {

           "project_name": "Hospital Management System"

       }

    }

  ]

};


const { id, full_name, user_skills, resource_allocateds } = input;


const output = {

  id,

  full_name,

  skills: user_skills.map(item => ({

      skill_id: item.skill_id,

      skill_name: item.skill.skill_name

    })),

  resource_allocateds: resource_allocateds.map(item => ({

      project_id: item.project_id,

      end_date: item.end_date,

      project_name: item.project.project_name

    })),


查看完整回答
反對 回復 2022-12-18
?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

您可以使用toArrayand mapValueslike 如下所示:


const jsonData = {

  "id": 2,

  "full_name": "Karan Kumar",

  "user_skills": [

     {

        "skill_id": 1,

        "skill": {

            "skill_name": "Angular 8"

         }

     },

     {

        "skill_id": 3,

        "skill": {

            "skill_name": "Java Spring"

         }

      }

  ],

  "resource_allocateds": [

    {

       "project_id": 1,

       "end_date": "2019-06-20",

       "project": {

           "project_name": "Inventory System"

        }

    },

    {

        "project_id": 2,

        "end_date": "2020-01-15",

        "project": {

             "project_name": "Hospital Management System"

         }

    }

  ]

};


const transformedJson = {...jsonData};

transformedJson.user_skills = _.toArray(_.mapValues(transformedJson.user_skills, ({ skill_id, skill }) => {

  return {

    skill_id,

    skill_name: skill.skill_name

  };

}));

transformedJson.resource_allocateds = _.toArray(_.mapValues(transformedJson.resource_allocateds, ({ project_id, project }) => {

  return {

    project_id,

    project_name: project.project_name

  };

}));


document.getElementById('jsonResults').innerHTML = JSON.stringify(transformedJson, null, 2);

<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>

<pre id="jsonResults"></pre>


查看完整回答
反對 回復 2022-12-18
  • 2 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號