繁体   English   中英

将数组对象转换为所需格式的对象数组

[英]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/P: 
{
    projectIds: [2]
    subjectGroupIds: [] // incase multiple subjects are grouped togehter
    subjectIds: [4]
}

Expected format:
[{"type":"PROJECT","id":2},{"type":"SUBJECT","id":4}]

提前致谢

    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM