Javascript 从对象的JSON数组中获取键/值,而不知道键名
我正在尝试使用JSON结构化数组中的数据构建一个HTML表,例如:Javascript 从对象的JSON数组中获取键/值,而不知道键名,javascript,arrays,json,Javascript,Arrays,Json,我正在尝试使用JSON结构化数组中的数据构建一个HTML表,例如: var myjson = [ {"firstName":"John", "lastName":"Doe"}, {"firstName":"Anna", "lastName":"Smith"}, {"firstName":"Peter","lastName": "Jones"} ]; 我知道我可以使用: var tbl = "<table>" $.each(myjson, function
var myjson = [
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter","lastName": "Jones"}
];
我知道我可以使用:
var tbl = "<table>"
$.each(myjson, function(x, y) {
tbl += "<tr>";
tbl += "<td>firstName</td>";
tbl += "<td>lastName</td>";
tbl += "</tr>";
tbl += "<tr>";
tbl += "<td>" + y.firstName + "</td>";
tbl += "<td>" + y.lastName + "</td>";
tbl += "</tr>";
});
tbl += "</table>";
var tbl=“”
$.each(myjson,函数(x,y){
tbl+=”;
tbl+=“名字”;
tbl+=“姓氏”;
tbl+=”;
tbl+=”;
tbl+=“”+y.firstName+“”;
tbl+=“”+y.lastName+“”;
tbl+=”;
});
tbl+=”;
但是,如果我不知道列名(firstName,lastName)的名称是什么,我怎么能得到相同的结果呢?如何迭代JSON结构化数组中每个对象的键/值
在每个数组中,每个对象中的元素数将相同使用
for…In
循环
for(let key in myjson[0]) console.log(key + ' == ' + myjson[0][key]);
下面是代码的外观(另请参见):
var myjson=[{
“名字”:“约翰”,
“姓氏”:“能源部”
}, {
“名字”:“安娜”,
“姓氏”:“史密斯”
}, {
“名字”:“彼得”,
“姓氏”:“琼斯”
}];
var键=[];
for(让输入myjson[0])keys.push(key);
var tbl=“”
$.each(myjson,function(){
tbl+=”;
对于(让索引进入键)tbl+=''+键[索引]+'';
tbl+=”;
tbl+=”;
对于(让索引键)tbl+=''+参数[1][keys[index]]+'';
tbl+=”;
});
tbl+=”;
document.body.innerHTML=tbl;
在循环中为…使用
for(let key in myjson[0]) console.log(key + ' == ' + myjson[0][key]);
下面是代码的外观(另请参见):
var myjson=[{
“名字”:“约翰”,
“姓氏”:“能源部”
}, {
“名字”:“安娜”,
“姓氏”:“史密斯”
}, {
“名字”:“彼得”,
“姓氏”:“琼斯”
}];
var键=[];
for(让输入myjson[0])keys.push(key);
var tbl=“”
$.each(myjson,function(){
tbl+=”;
对于(让索引进入键)tbl+=''+键[索引]+'';
tbl+=”;
tbl+=”;
对于(让索引键)tbl+=''+参数[1][keys[index]]+'';
tbl+=”;
});
tbl+=”;
document.body.innerHTML=tbl;
用于获取对象的键
Object.keys()方法返回表示给定对象的所有可枚举属性的字符串数组
使用数组的索引
决定表的标题
var myjson=[{
“名字”:“约翰”,
“姓氏”:“能源部”
}, {
“名字”:“安娜”,
“姓氏”:“史密斯”
}, {
“名字”:“彼得”,
“姓氏”:“琼斯”
}];
var tbl=“”;
$.each(myjson,函数(x,y){
变量键=对象键(y);
如果(!x){
tbl+=”;
键。forEach(功能(键){
tbl+=“”+键+“”;
});
tbl+=”;
}
tbl+=”;
键。forEach(功能(键){
tbl+=“”+y[键]+“”;
});
tbl+=”;
});
tbl+=”;
$('body')。追加(待定)代码>
用于获取对象的键
Object.keys()方法返回表示给定对象的所有可枚举属性的字符串数组
使用数组的索引
决定表的标题
var myjson=[{
“名字”:“约翰”,
“姓氏”:“能源部”
}, {
“名字”:“安娜”,
“姓氏”:“史密斯”
}, {
“名字”:“彼得”,
“姓氏”:“琼斯”
}];
var tbl=“”;
$.each(myjson,函数(x,y){
变量键=对象键(y);
如果(!x){
tbl+=”;
键。forEach(功能(键){
tbl+=“”+键+“”;
});
tbl+=”;
}
tbl+=”;
键。forEach(功能(键){
tbl+=“”+y[键]+“”;
});
tbl+=”;
});
tbl+=”;
$('body')。追加(待定)代码>
您可以简单地执行此操作
var tbl = "<table>"
$.each(myjson, function(x, y) {
keys = Object.keys(y);
tbl += "<tr>";
$.each(keys, function(i,key){
tbl += "<td>" + key + "</td>";
})
tbl += "</tr><tr>";
$.each(keys, function(i,key){
tbl += "<td>" + y[key] + "</td>";
})
tbl += "</tr>";
});
tbl += "</table>";
var tbl=“”
$.each(myjson,函数(x,y){
键=对象。键(y);
tbl+=”;
$。每个(键,功能(i,键){
tbl+=“”+键+“”;
})
tbl+=”;
$。每个(键,功能(i,键){
tbl+=“”+y[键]+“”;
})
tbl+=”;
});
tbl+=”;
如果需要,您可以进一步减少到一个循环。您可以简单地这样做
var tbl = "<table>"
$.each(myjson, function(x, y) {
keys = Object.keys(y);
tbl += "<tr>";
$.each(keys, function(i,key){
tbl += "<td>" + key + "</td>";
})
tbl += "</tr><tr>";
$.each(keys, function(i,key){
tbl += "<td>" + y[key] + "</td>";
})
tbl += "</tr>";
});
tbl += "</table>";
var tbl=“”
$.each(myjson,函数(x,y){
键=对象。键(y);
tbl+=”;
$。每个(键,功能(i,键){
tbl+=“”+键+“”;
})
tbl+=”;
$。每个(键,功能(i,键){
tbl+=“”+y[键]+“”;
})
tbl+=”;
});
tbl+=”;
如果需要,您可以进一步减少到一个循环。您可以尝试此方法。。
tbl+=”;
对于(var i=0;i您可以尝试此。。
tbl+=”;
对于(var i=0;我将给您一个对象自身属性的数组。然后您可以迭代该数组。的可能副本将给您一个对象自身属性的数组。然后您可以迭代该数组。感谢的可能副本,我尝试了此操作,但它只给了我一个索引列表numbers@PeterJQuinn.你在JSFIDLE上试过了吗?它的工作原理和你的一样ected,您得到的索引可以用作对象的属性名。抱歉@SoftwareEngineer171,这确实会显示结果,但它会每隔一行创建带有键的行。我知道我没有指定不执行此操作,而且很容易消除此操作。多亏了很多人,我尝试了此操作,但它只给了我一个索引号列表rs@PeterJQuinn.您在JSFIDLE上试用过吗?它的工作原理与您预期的一样,您获得的索引可以用作对象的属性名。抱歉@SoftwareEngineer171,这确实会显示结果,但它会每隔一行创建一行带有键的行。我知道我没有指定不执行此操作,而且消除此操作非常简单。感谢LotusExa正是我想要的!谢谢!正是我想要的!谢谢!