[英]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.