簡體   English   中英

將對象數組轉換為特定格式?

[英]convert an array of objects into a specific format?

我有以下一組數據,這些數據采用數組中的對象格式。


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

我需要將上述數據集轉換為如下所示的格式。 我已經被困在這里一段時間了。 我嘗試編寫一個 function 將其轉換為所需的數據格式,但沒有成功。


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

如果有人能幫我解決這個問題,那將是一個很大的幫助。 提前致謝:)

這能解決你的問題嗎?

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

我會用減速器來做:

 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

似乎您的第一個數據是所需的 output 中的 static:

 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);

我最終會使用這樣的東西:

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"]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM