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
})),
}

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>
添加回答
舉報