Как преобразовать структуру объекта nodeJS - PullRequest
0 голосов
/ 24 марта 2020

У меня есть объект с n членами, подобными этому:

 {
  open: '122.31000000',
  high: '137.50000000',
  low: '119.50000000',
  close: '135.92000000',
  volume: '1436796.12449000',
  closeTime: 1585007999999,
} 
{
  open: '132.63000000',
  high: '137.13000000',
  low: '121.10000000',
  close: '122.32000000',
  volume: '1055699.86532000',
  closeTime: 1584921599999,
}

Я хочу преобразовать этот объект таким образом, не используя для l oop, как я могу это сделать?

{  
  o: '122.31000000',
  h: '137.50000000',
  l: '119.50000000',
  c: '135.92000000',
  v: '1436796.12449000',
  d: 1585007999999
},
{
  o: '132.63000000',
  h: '137.13000000',
  l: '121.10000000',
  c: '122.32000000',
  v: '1055699.86532000'
  d: '1584921599999'
}

Ответы [ 3 ]

5 голосов
/ 24 марта 2020

Вам нужно будет использовать что-то вроде l oop. Один из вариантов - использовать карту с деструктуризацией.

 const data = [{
  open: '122.31000000',
  high: '137.50000000',
  low: '119.50000000',
  close: '135.92000000',
  volume: '1436796.12449000',
  closeTime: 1585007999999,
},
{
  open: '132.63000000',
  high: '137.13000000',
  low: '121.10000000',
  close: '122.32000000',
  volume: '1055699.86532000',
  closeTime: 1584921599999,
}]

const updated = data.map(({open: o, high: h, low: l, close: c, volume: v, closeTime: d}) => ({o, h, l, c, v, d}))

console.log(updated)
1 голос
/ 24 марта 2020

Нет ничего плохого в циклах, но вы можете сделать это с помощью других методов. Обратите внимание, что это совсем не улучшит производительность, так как вы все еще технически просматриваете каждый элемент и строите новый объект для каждого.

const propertyRenaming = {
  open: 'o',
  high: 'h',
  low: 'l',
  close: 'c',
  volume: 'v',
  closeTime: 'd'
};

const transformed = data.map(obj => 
  Object.entries(data).reduce((result, [prop, value]) => 
    Object.assign(result, { [propertyRenaming[prop]]: value }), 
    {}
  )
);
1 голос
/ 24 марта 2020

Вы можете использовать .map() и Object.keys() для преобразования в ожидаемый результат.

const data = [{ open: '122.31000000', high: '137.50000000', low: '119.50000000', close: '135.92000000', volume: '1436796.12449000', closeTime: 1585007999999, }, { open: '132.63000000', high: '137.13000000', low: '121.10000000', close: '122.32000000', volume: '1055699.86532000', closeTime: 1584921599999, }];

const result = data.map(e => 
  Object.keys(e).reduce((a, c) => {
    if (c === 'closeTime') a['d'] = e[c];
    else a[c[0]] = e[c];
    return a;
  }, {})
);

console.log(result);

Надеюсь, это поможет!

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