Javascript API响应是数组的数组。第一个数组是对象的键-值对中的键
以下是我的流程。我将使用第一个数组,将值作为对象键分配给我的模板。然后我希望使用该模板,将下一个数组的元素作为值分配给它,然后将其推送到最终的响应对象。然后我将继续这样做,直到到达响应数组的末尾。我本质上希望将其转换为JSON,使用第一个响应数组的元素作为所有元素的值 以下是回应:Javascript API响应是数组的数组。第一个数组是对象的键-值对中的键,javascript,arrays,json,object,Javascript,Arrays,Json,Object,以下是我的流程。我将使用第一个数组,将值作为对象键分配给我的模板。然后我希望使用该模板,将下一个数组的元素作为值分配给它,然后将其推送到最终的响应对象。然后我将继续这样做,直到到达响应数组的末尾。我本质上希望将其转换为JSON,使用第一个响应数组的元素作为所有元素的值 以下是回应: [ [ "POP", "GEONAME", "state" ], [ "4863300", "Alabama", "01" ], [ "74
[
[
"POP",
"GEONAME",
"state"
],
[
"4863300",
"Alabama",
"01"
],
[
"741894",
"Alaska",
"02"
],
[
"6931071",
"Arizona",
"04"
],
[
"2988248",
"Arkansas",
"05"
],
[
"39250017",
"California",
"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
}
函数modifyArrayResponse(响应){
//创建模板(分配密钥)
让模板={};
设keys=response[0];
//将密钥分配给模板
for(设i=0;i
可能是这样
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);
也许像这样
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);
所需的输出无效。整个过程都有
{}
,但这是针对对象的,对象需要是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"
}
]
创建这个的代码需要在第一个元素之后的所有元素上循环
函数modifyArrayResponse(响应){
常量键=响应[0];
常量结果=[];
for(设i=1;iobj[key]=response[i][index]);
结果:推送(obj);
}
返回结果;
}
变量输入=[
[“流行音乐”、“地理名称”、“州”],
[“4863300”、“阿拉巴马州”、“01”],
[“741894”、“阿拉斯加”、“02”],
[“6931071”,“亚利桑那州”,“04”],
[“2988248”、“阿肯色州”、“05”],
[“39250017”、“加利福尼亚”、“06”]
];
日志(modifyArrayResponse(输入))代码>所需的输出无效。整个过程都有{}
,但这是针对对象的,对象需要是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"
}
]
创建这个的代码需要在第一个元素之后的所有元素上循环
函数modifyArrayResponse(响应){
常量键=响应[0];
常量结果=[];
for(设i=1;iobj[key]=response[i][index]);
结果:推送(obj);
}
返回结果;
}
变量输入=[
[“流行音乐”、“地理名称”、“州”],
[“4863300”、“阿拉巴马州”、“01”],
[“741894”、“阿拉斯加”、“02”],
[“6931071”,“亚利桑那州”,“04”],
[“2988248”、“阿肯色州”、“05”],
[“39250017”、“加利福尼亚”、“06”]
];
日志(modifyArrayResponse(输入))编码>使用shift()
获取并删除列名,然后使用map()
数组的其余部分,并在列上使用reduce()
创建每个对象
让cols=data.shift()
设res=data.map(arr=>cols.reduce((a,c,i)=>(a[c]=arr[i],a),{}))
console.log(res)
风险值数据=[
[“流行音乐”、“地理名称”、“州”],
[“4863300”、“阿拉巴马州”、“01”],
[“741894”、“阿拉斯加”、“02”],
[“6931071”,“亚利桑那州”,“04”],
[“2988248”、“阿肯色州”、“05”],
[“39250017”、“加利福尼亚”、“06”]
]
使用shift()
获取并删除列名,然后使用map()
数组的其余部分,并在列上使用reduce()
创建每个对象
让cols=data.shift()
设res=data.map(arr=>cols.reduce((a,c,i)=>(a[c]=arr[i],a),{}))
console.log(res)
风险值数据=[
[“流行音乐”、“地理名称”、“州”],
[“4863300”、“阿拉巴马州”、“01”],
[“741894”、“阿拉斯加”、“02”],
[“6931071”,“亚利桑那州”,“04”],
[“2988248”、“阿肯色州”、“05”],
[“39250017”、“加利福尼亚”、“06”]
]
您可以将键和值分离到单独的数组中,然后使用Array.prototype.map
对值进行迭代,并使用Array.prototype.reduce构建对象:
const data=[“POP”、“GEONAME”、“state”]、[“4863300”、“阿拉巴马州”、“01”]、[“741894”、“阿拉斯加”、“02”]、[“6931071”、“亚利桑那州”、“04”]、[“2988248”、“阿肯色州”、“05”]、[“39250017”、“加利福尼亚州”、“06”];
常数[键,…VAL]=数据;
const result=vals.map(item=>item.reduce((all,v,i)=>(all[keys[i]]=item[i],all),{});
控制台日志(结果)
您可以将键和值分离到单独的数组中,然后使用Array.prototype.map
对值进行迭代,并使用Array.prototype.reduce
构造对象:
const data=[“POP”、“GEONAME”、“state”]、[“4863300”、“阿拉巴马州”、“01”]、[“741894”、“阿拉斯加”、“02”]、[“6931071”、“亚利桑那州”、“04”]、[“2988248”、“阿肯色州”、“05”]、[“39250017”、“加利福尼亚州”、“06”];
常数[键,…VAL]=数据;
const result=vals.map(item=>item.reduce((all,v,i)=>(all[keys[i]]=item[i],all),{});
控制台日志(结果)
您想要的不是有效的JSON:-)为什么它不是有效的JSON?对象必须有键,{…}
没有意义,但是[{…}]
有,所以:{“foo”:{…}
您想要的不是有效的JSON:-)为什么它不是有效的JSON?对象必须有键,{…}
没有意义,但是[{…}]
有意义,所以:{“foo”:{…}
@Barmar可能是对的,用一个简单的reduce@Barmar可能是对的,通过简单的减少