如何使用动态JSON中的键创建javascript数组?

如何使用动态JSON中的键创建javascript数组?,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我有一个JSON字符串的格式 [{“日期”:“2019-01-01”,“A”:0,“B”:0}] 由php脚本生成,其中可以有任意数量的具有不同密钥名称和值的密钥 我试图做的是在创建js数组时访问这些键名 当我知道密钥名称是什么时,这很容易: $.ajax({ url: "data.php", method: "GET", success: function(data) { let date = []; let one = []; let two = [];

我有一个JSON字符串的格式
[{“日期”:“2019-01-01”,“A”:0,“B”:0}]
由php脚本生成,其中可以有任意数量的具有不同密钥名称和值的密钥

我试图做的是在创建js数组时访问这些键名

当我知道密钥名称是什么时,这很容易:

$.ajax({
  url: "data.php",
  method: "GET",
  success: function(data) {
  let date = [];
  let one = [];
  let two = [];             

  for(let i in data) {
    date.push(data[i].DATE);
    one.push(data[i].A);
    two.push(data[i].B);            
  }
...
我只是按键名将它们推入数组。但是如果我事先不知道密钥名称(本例中的日期、A和B),该怎么办

我尝试获取密钥名称,并使用它们来代替静态的“日期”、“A”和“B”,这是行不通的。例如:

const x = Object.keys(data[0]);
console.log(x[1]);
这将导致“A”,但我不能将其用作
one.push(数据[I].x[1])以填充数组。控制台中的错误是

未捕获的TypeError:无法读取未定义的属性“1”


我正在寻找解决方案,希望您能帮助我理解这个问题。

您的思路正确,但语法不正确。您将不得不使用数据[i][x[1]]。在您的示例中,“data”没有“x”属性,因此它导致了错误

将整个
x[1]
封装在方括号中,将其用作键-否则,您将尝试访问
数据[i].x中不存在的第一项:

one.push(data[i][x[1]]);
试试这个

设a=[];
设b=[];
设c=[];
常量数据=[{“a”:1,“b”:2,“c”:3}];
data.forEach(函数(项、索引){
Object.key(item).forEach(function(i,ind){
评估(i+'.push('+项目[i]+'));
})
});

log('a is=',a,'b is=',b,'c is=',c)谢谢,这确实解决了我的问题。谢谢你的解释杰克,我现在明白了。没问题@Ante,很高兴我能帮上忙。除非完全必要,否则不要使用
eval
——在这种情况下,它不是。是的,我知道@JackBashford。但这是我为他做的。。如果他有更多的键,他会根据其他键创建空键。。