преобразование объекта массивов в массив объектов в желаемом формате - PullRequest
0 голосов
/ 24 февраля 2020
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;
};

Я написал свою собственную логику c, чтобы получить желаемый результат, если кто-то может проверить и сказать мне, есть ли лучший способ сделать это. Я добавляю вход и ожидаю ниже:

I/P: 
{
    projectIds: [2]
    subjectGroupIds: [] // incase multiple subjects are grouped togehter
    subjectIds: [4]
}

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

Заранее спасибо

1 Ответ

1 голос
/ 14 марта 2020
    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}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...