【问题标题】:converting object of arrays to an array of objects in a desired format将数组对象转换为所需格式的对象数组
【发布时间】:2020-02-24 13:12:00
【问题描述】:
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}]

提前致谢

【问题讨论】:

标签: javascript node.js loops arraylist higher-order-functions


【解决方案1】:
    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}]

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 2021-05-03
    • 2018-12-04
    • 2021-06-16
    • 1970-01-01
    • 2019-10-22
    • 2019-07-29
    相关资源
    最近更新 更多