Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript API响应是数组的数组。第一个数组是对象的键-值对中的键_Javascript_Arrays_Json_Object - Fatal编程技术网

Javascript API响应是数组的数组。第一个数组是对象的键-值对中的键

Javascript API响应是数组的数组。第一个数组是对象的键-值对中的键,javascript,arrays,json,object,Javascript,Arrays,Json,Object,以下是我的流程。我将使用第一个数组,将值作为对象键分配给我的模板。然后我希望使用该模板,将下一个数组的元素作为值分配给它,然后将其推送到最终的响应对象。然后我将继续这样做,直到到达响应数组的末尾。我本质上希望将其转换为JSON,使用第一个响应数组的元素作为所有元素的值 以下是回应: [ [ "POP", "GEONAME", "state" ], [ "4863300", "Alabama", "01" ], [ "74

以下是我的流程。我将使用第一个数组,将值作为对象键分配给我的模板。然后我希望使用该模板,将下一个数组的元素作为值分配给它,然后将其推送到最终的响应对象。然后我将继续这样做,直到到达响应数组的末尾。我本质上希望将其转换为JSON,使用第一个响应数组的元素作为所有元素的值

以下是回应:

[
  [
    "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可能是对的,通过简单的减少