Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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 从对象的JSON数组中获取键/值,而不知道键名_Javascript_Arrays_Json - Fatal编程技术网

Javascript 从对象的JSON数组中获取键/值,而不知道键名

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

我正在尝试使用JSON结构化数组中的数据构建一个HTML表,例如:

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正是我想要的!谢谢!正是我想要的!谢谢!