копирование значений из каждого объекта в массив объектов - PullRequest
0 голосов
/ 14 октября 2019

Проблема: Учитывая массив объектов, я хочу скопировать каждый объект в новый массив, изменив имя его KEYS.

Я пытаюсь преобразовать этот объект:

  items: [
    {

      "A": "Q1234",
      "B": "W1234",
      "C": 19.9,
      "D": 2
    },
    {
      "A": "Q1234",
      "B": "W1234",
      "C": 19.9,
      "D": 2
    },

к этому:

  items: [
    {
      "id": "Q1234",
      "power": "W1234",
      "health": 19.9,
      "mana": 2
    },
    {
      "id": "Q1234",
      "power": "W1234",
      "health": 19.9,
      "mana": 2
    },

Я пробовал следующее, но оно не работает:

let replaceAll = () => {
  request.responseText.replace('A','id')
  request.responseText.replace('B','power')
  request.responseText.replace('C','health')
  request.responseText.replace('D','mana')
}

request.responseText вывод:

{"id":941282,"items":[{"id":117991,"power":6.5000,"health":102351,"mana":6},{"id":118993,"power":2.5000,"health":103353,"mana":1},{"id":128464,"power":11.6400,"health":112825,"mana":1}]}"

const _myItens = JSON.parse(request.responseText)

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Вы можете использовать Array.map(), деструктурировать объекты и использовать псевдонимы для создания переменных с новыми именами, затем вы можете восстановить объекты с помощью сокращенные имена свойств :

const items = [{"A":"Q1234","B":"W1234","C":19.9,"D":2},{"A":"Q1234","B":"W1234","C":19.9,"D":2}]

const result = items.map(({ A: id, B: power, C: health, D: mana }) => ({
  id,
  power,
  health,
  mana
}))

console.log(result)
0 голосов
/ 14 октября 2019

После исправления ввода, чтобы вы могли анализировать JSON, создайте функцию, которая преобразует ключи A, B, C, D объекта в id, power и т. Д. клавиши и .map каждый объект над этой функцией:

const responseText = `{ "items": [
    {

      "A": "Q1234",
      "B": "W1234",
      "C": 19.9,
      "D": 2
    },
    {
      "A": "Q1234",
      "B": "W1234",
      "C": 19.9,
      "D": 2
    }]}`;
const input = JSON.parse(responseText);
const keyMap = {
  A: 'id',
  B: 'power',
  C: 'health',
  D: 'mana'
};
const transform = shortObj => Object.fromEntries(
  Object.entries(shortObj).map(([key, val]) => [keyMap[key], val])
);
console.log(input.items.map(transform));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...