преобразовать массив объектов в определенный формат? - PullRequest
0 голосов
/ 07 октября 2019

У меня есть приведенный ниже набор данных в формате объектов в массиве.


  const columns = [
    {
      "usage": 395226,
      "population": 1925117,
      "value": 21,
      "abv": "MN"
    },
    {
      "usage": 893129,
      "population": 4327541,
      "value": 21,
      "abv": "IL"
    }
  ]

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


let columns = [ 
                 ["abv", "population"], 
                 ["MN", 1925117], 
                 ["IL", 4327541] 
              ] 

Было бы очень полезно, если бы кто-нибудь мог помочь мне решить эту проблему. Заранее спасибо:)

Ответы [ 4 ]

0 голосов
/ 07 октября 2019

Я бы в конечном итоге использовал что-то вроде этого:

const columns = [
    {
      "usage": 395226,
      "population": 1925117,
      "value": 21,
      "abv": "MN"
    },
    {
      "usage": 893129,
      "population": 4327541,
      "value": 21,
      "abv": "IL"
    }
];

let converted = columns.map((c) => [c.abv, c.population]);
converted.unshift(["abv", "population"]);
0 голосов
/ 07 октября 2019

Я бы сделал это с редуктором:

 const cols = [
    {
      "usage": 395226,
      "population": 1925117,
      "value": 21,
      "abv": "MN"
    },
    {
      "usage": 893129,
      "population": 4327541,
      "value": 21,
      "abv": "IL"
    }
  ]

cols.reduce(function(acc, current) {
  acc.push([current.abv, current.population])
  return acc;
}, ["abv", "population"]);

Или, если вам не нравится использовать push:

cols.reduce(function(acc, current) {

 acc = [
  ...acc,
  [current.abv, current.population]
 ]

 return acc;
}, ["abv", "population"]);

Пример: https://jsbin.com/gudivuhuro/edit?html,js,console

0 голосов
/ 07 октября 2019

Кажется, ваши первые данные статичны в желаемом выводе:

const columns = [
    {
      "usage": 395226,
      "population": 1925117,
      "value": 21,
      "abv": "MN"
    },
    {
      "usage": 893129,
      "population": 4327541,
      "value": 21,
      "abv": "IL"
    }
  ];
  
  let cols = [];
  if (columns.length) {
      cols.push(["abv", "population"]);
      columns.forEach(item => {
          cols.push([item.abv, item.population])
      });
  }
  console.log(cols);
0 голосов
/ 07 октября 2019

решает ли это вашу проблему?

const columns = [
    {
      "usage": 395226,
      "population": 1925117,
      "value": 21,
      "abv": "MN"
    },
    {
      "usage": 893129,
      "population": 4327541,
      "value": 21,
      "abv": "IL"
    }
  ]
var k = [["abv", "population"]];
for(var i = 0; i < columns.length; i++){
    k.push([columns[i].abv, columns[i].population]);
}
console.log(k) // Expected expected output

и вот общая реализация, если вам так требуется.

var names = ["abv", "population"];
var k = GetPropertiesInArray(columns, names); //[["abv", "population"]];

function GetPropertiesInArray(columns, names){
    var m = [];
    m.push(names);
    for(var i = 0; i < columns.length; i++){
        var item = [];
        for(var j in names){
            item.push(columns[i][names[j]]);
        }
        m.push(item);
    }

    return m;
}

console.log(k);//Expected output
...