[英]converting object of arrays to an array of objects in a desired format
const getSelectedItemsIds = selectedItemsList => {
let keys = Object.keys(selectedItemsList);
let selectedItems = [];
keys.map(k => {
selectedItemsList[k].map(id => {
if (k.includes("projectIds")) {
return selectedItems.push({ type: "PROJECT", id });
} else if (k.includes("subjectGroupIds")) {
return selectedItems.push({
type: "SUBJECT_GROUP",
id
});
} else if (k.includes("subjectIds")) {
return selectedItems.push({ type: "SUBJECT", id });
}
});
});
return selectedItems;
};
I have written my custom logic to get the desired result, if anyone can validate and tell me if there's a better way to do it.我已经编写了我的自定义逻辑来获得所需的结果,如果有人可以验证并告诉我是否有更好的方法来做到这一点。 I'm adding input and expected out below:
我在下面添加输入和预期:
I/P:
{
projectIds: [2]
subjectGroupIds: [] // incase multiple subjects are grouped togehter
subjectIds: [4]
}
Expected format:
[{"type":"PROJECT","id":2},{"type":"SUBJECT","id":4}]
Thanks in advance提前致谢
let inputData = { projectIds: [2], subjectGroupIds: [], subjectIds: [4] };
const selectedItems = this.getSelectedItemsIds(inputData);
//Function Definition
getSelectedItemsIds = selectedItemsList => {
let selectedItems = [];
let keys = Object.keys(selectedItemsList)
for ( let k of Object.keys(selectedItemsList)){
keys.forEach(key =>{
if(key === k && selectedItemsList[k].length > 0){
if(key === 'projectIds'){
selectedItems.push({ type: "PROJECT", id: selectedItemsList[k][0]})
}
else if(key === 'subjectGroupIds'){
selectedItems.push({ type: "SUBJECTGROUP", id: selectedItemsList[k][0]})
}
else if(key === 'subjectIds'){
selectedItems.push({ type: "SUBJECT", id: selectedItemsList[k][0]})
}
}
})
}
return selectedItems
}
console.log(selectedItems) //[{type: "PROJECT", id: 2}, {type: "SUBJECT", id: 4}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.