如何使用动态JSON中的键创建javascript数组?
我有一个JSON字符串的格式如何使用动态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 = [];
[{“日期”:“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。但这是我为他做的。。如果他有更多的键,他会根据其他键创建空键。。