Создать массив объектов из вложенного объекта - PullRequest
0 голосов
/ 20 мая 2019

У меня есть вложенный объект empData.Мне нужно перебрать каждый из ключей в моем объекте и вернуть массив объектов.Каждый ключ внутри моего объекта empData снова является объектом.

Теперь мне нужно вернуть массив объекта в виде:

Ожидаемый результат:

[{
 "team": "AUS",
 "name": "John"
}, {
 "team": "CAN",
 "name": "Steve"
}, {
 "team": "IND",
 "name": "Robbie"
}, {
 "team": "IRE",
 "name": "James"
}, {
 "team": "USA",
 "name": "Austin"
}];

МойКод:

function getData() {
 const empData = {
  "AUS": {
   "isRetired": true,
   "name": "John"
  },
  "CAN": {
   "name": "Steve"
  },
  "IND": {
   "name": "Robbie"
  },
  "IRE": {
   "name": "James"
  },
  "USA": {
   "name": "Austin"
  }
 };
 Object.keys(empData).map(function(eachKey) {
  const obj = {
   team: eachKey,
   name: eachKey.name
  };
  console.log(obj);
  return obj;
 });
}
<button onclick="getData()">Get Data</button>

Может ли кто-нибудь помочь мне с этим?

Ответы [ 4 ]

4 голосов
/ 20 мая 2019

изменение name: eachKey.name

 name: empData[eachKey].name



function getData() {
 const empData = {
  "AUS": {
   "isRetired": true,
   "name": "John"
  },
  "CAN": {
   "name": "Steve"
  },
  "IND": {
   "name": "Robbie"
  },
  "IRE": {
   "name": "James"
  },
  "USA": {
   "name": "Austin"
  }
 };
 Object.keys(empData).map(function(eachKey) {
  const obj = {
   team: eachKey,
   name: empData[eachKey].name
  };
  console.log(obj);
  return obj;
 });
}
2 голосов
/ 20 мая 2019

.map вместо Object.entries, так что вы можете извлечь оба ключа (чтобы получить team и значение (чтобы вы могли получить name) сразу:

const empData = {
  "AUS": {
    "isRetired": true,
    "name": "John"
  },
  "CAN": {
    "name": "Steve"
  },
  "IND": {
    "name": "Robbie"
  },
  "IRE": {
    "name": "James"
  },
  "USA": {
    "name": "Austin"
  }
};
const getData = () => {
  const result = Object.entries(empData).map(([team, { name }]) => ({
    team,
    name
  }));
  console.log(result);
};
<button onclick="getData()">Get Data</button>
2 голосов
/ 20 мая 2019

Вы можете использовать Object.entries для преобразования объекта в массив.Используйте map для цикла по массиву.

Object.entries первый элемент - это ключ, а второй - значение.

const empData = {
  "AUS": {
    "isRetired": true,
    "name": "John"
  },
  "CAN": {
    "name": "Steve"
  },
  "IND": {
    "name": "Robbie"
  },
  "IRE": {
    "name": "James"
  },
  "USA": {
    "name": "Austin"
  }
};

var result = Object.entries(empData).map(([team, {name}]) => ({team,name}));

console.log(result);
1 голос
/ 20 мая 2019

Вы можете использовать for..in, чтобы выполнить итерацию объекта, создать новый объект с соответствующими ключами и значениями и передать в другой массив

function getData() {
  const empData = {
    "AUS": {
      "isRetired": true,
      "name": "John"
    },
    "CAN": {
      "name": "Steve"
    },
    "IND": {
      "name": "Robbie"
    },
    "IRE": {
      "name": "James"
    },
    "USA": {
      "name": "Austin"
    }
  };

  let newData = [];
  for (let keys in empData) {
    newData.push({
      team: keys,
      name: empData[keys].name
    })
  }
  console.log(newData)
}

getData()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...