簡體   English   中英

API響應是數組數組。 第一個數組是對象的鍵值對中的鍵

[英]API response is array of arrays. The first array being the key in key-value pair of an object

這就是我的流程。 我將使用第一個數組,將值作為對象鍵分配給我的模板。 然后,我想使用該模板,將下一個數組的元素分配為其值,然后將其推入最終響應對象。 然后,我將繼續執行此操作,直到到達響應數組的末尾。 我本質上想將其轉換為JSON,使用第一個響應數組的元素作為所有值。

這是回應:

[
  [
    "POP",
    "GEONAME",
    "state"
  ],
  [
    "4863300",
    "Alabama",
    "01"
  ],
  [
    "741894",
    "Alaska",
    "02"
  ],
  [
    "6931071",
    "Arizona",
    "04"
  ],
  [
    "2988248",
    "Arkansas",
    "05"
  ],
  [
    "39250017",
    "California",
    "06"
  ]
]

這是我想要的輸出(鍵始終是第一個響應索引)

{
  {
    "POP": "4863300"
    "GEONAME": "Alabama"
    "state": "01"
  }
  {
    "POP": "741894"
    "GEONAME": "Alaska"
    "state": "02"
  },
  {
    "POP": "6931071"
    "GEONAME": "Arizona"
    "state": "04"
  },
  {
    "POP": "2988248"
    "GEONAME": "Arkansas"
    "state": "05"
  },
  {
    "POP": "39250017"
    "GEONAME": "California"
    "state": "06"
  }
}

這是我到目前為止的內容:

function modifyArrayResponse(response) {
  // Create template (Assign keys)
  let template = {};
  let keys = response[0];

  // Assign keys to template
  for(let i = 0; i < keys.length; i++){
    template[keys[i]] = template[i];
  }

  // Use the template (Assign values)



  // Return modified response
}

您想要的輸出無效。 整個過程中都有{} ,但這是針對對象的,它必須是key: value對。 您應該期望的是一系列對象:

[
  {
    "POP": "4863300"
    "GEONAME": "Alabama"
    "state": "01"
  }
  {
    "POP": "741894"
    "GEONAME": "Alaska"
    "state": "02"
  },
  {
    "POP": "6931071"
    "GEONAME": "Arizona"
    "state": "04"
  },
  {
    "POP": "2988248"
    "GEONAME": "Arkansas"
    "state": "05"
  },
  {
    "POP": "39250017"
    "GEONAME": "California"
    "state": "06"
  }
]

創建代碼的代碼需要在第一個之后的所有元素上循環。

 function modifyArrayResponse(response) { const keys = response[0]; const result = []; for (let i = 1; i < response.length; i++) { const obj = {}; keys.forEach((key, index) => obj[key] = response[i][index]); result.push(obj); } return result; } var input = [ ["POP", "GEONAME", "state"], ["4863300", "Alabama", "01"], ["741894", "Alaska", "02"], ["6931071", "Arizona", "04"], ["2988248", "Arkansas", "05"], ["39250017", "California", "06"] ]; console.log(modifyArrayResponse(input)); 

也許像這樣

var oData = [
  [
    "POP",
    "GEONAME",
    "state"
  ],
  [
    "4863300",
    "Alabama",
    "01"
  ],
  [
    "741894",
    "Alaska",
    "02"
  ],
  [
    "6931071",
    "Arizona",
    "04"
  ],
  [
    "2988248",
    "Arkansas",
    "05"
  ],
  [
    "39250017",
    "California",
    "06"
  ]
];

var oResult = [];
var columns = null;
oData.forEach(function(data) {
  if (columns === null) {
    columns = data;
  } else {
    var oEntry = {};
    oResult.push(oEntry);
    data.forEach(function(d, i) {
      oEntry[columns[i]] = d;
    });
  }
});

console.log(oResult);

使用shift()獲取和刪除列名稱,然后map()數組的其余部分,並在列上使用reduce()創建每個對象

 let cols = data.shift() let res = data.map(arr => cols.reduce((a, c, i) => (a[c] = arr[i], a), {})) console.log(res) 
 <script> var data = [ ["POP", "GEONAME", "state"], ["4863300", "Alabama", "01"], ["741894", "Alaska", "02"], ["6931071", "Arizona", "04"], ["2988248", "Arkansas", "05"], ["39250017", "California", "06"] ] </script> 

可以單獨的鍵和值成單獨的陣列,然后遍歷與所述值Array.prototype.map和構造與該對象Array.prototype.reduce

 const data=[["POP","GEONAME","state"],["4863300","Alabama","01"],["741894","Alaska","02"],["6931071","Arizona","04"],["2988248","Arkansas","05"],["39250017","California","06"]]; const [keys, ...vals] = data; const result = vals.map(item => item.reduce((all,v,i) => (all[keys[i]] = item[i], all), {})); console.log(result); 

暫無
暫無

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

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