获取从对象的JSON数组键/值不知道
我试图建立与诸如从JSON结构数组数据的HTML表的键名:获取从对象的JSON数组键/值不知道
var myjson = [
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter","lastName": "Jones"}
];
我知道我可以使用:
但是我怎么能得到相同的结果,如果我不知道什么名称(firstName,lastName)被称为?我如何迭代JSON结构数组中每个对象的键/值?
在每个阵列中,元件的每个对象中的数量将是相同的
使用Object.keys
得到object
的keys
。
Object.keys()方法返回表示所有枚举的属性的给定对象的字符串阵列。
使用array
index
决定表的header
var myjson = [{
"firstName": "John",
"lastName": "Doe"
}, {
"firstName": "Anna",
"lastName": "Smith"
}, {
"firstName": "Peter",
"lastName": "Jones"
}];
var tbl = "<table>";
$.each(myjson, function(x, y) {
var keys = Object.keys(y);
if (!x) {
tbl += "<tr>";
keys.forEach(function(key) {
tbl += "<th>" + key + "</th>";
});
tbl += "</tr>";
}
tbl += "<tr>";
keys.forEach(function(key) {
tbl += "<td>" + y[key] + "</td>";
});
tbl += "</tr>";
});
tbl += "</table>";
$('body').append(tbl);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
完全是我以后的事!谢谢! –
使用for...in
回路。
for(let key in myjson[0]) console.log(key + ' == ' + myjson[0][key]);
这里是如何的代码应该看起来像(见JSFiddle):
var myjson = [{
"firstName": "John",
"lastName": "Doe"
}, {
"firstName": "Anna",
"lastName": "Smith"
}, {
"firstName": "Peter",
"lastName": "Jones"
}];
var keys = [];
for(let key in myjson[0]) keys.push(key);
var tbl = "<table>"
$.each(myjson, function() {
tbl += "<tr>";
for(let index in keys) tbl += '<td>' + keys[index] + '</td>';
tbl += "</tr>";
tbl += "<tr>";
for(let index in keys) tbl += '<td>' + arguments[1][keys[index]] + '</td>';
tbl += "</tr>";
});
tbl += "</table>";
document.body.innerHTML = tbl;
谢谢,我试过了,但它只给了我一个索引号列表 –
@PeterJQuinn。你在JSFiddle上试过了吗?它按预期工作,您得到的索引可以用作对象的属性名称。 – 2016-08-16 09:03:03
Apologies @ SoftwareEngineer171,这显示了我的结果,但它创建行与每隔一行的键。我知道我没有具体说明不这样做,反正这很容易消除。非常感谢 –
你可以简单地这样做
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>";
您可以进一步拉低到一个循环如果你想。
你可以试试这个.. JSFiddle
tbl += "<tr>";
for(var i=0;i<Object.keys(myjson[0]).length; i++)
{
tbl += "<td>"+Object.keys(myjson[0])[i]+"</td>";
}
tbl += "</tr>";
[Object.keys()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/键)会给你一个对象自己的属性的数组。然后你可以迭代它。 – ste2425
[获取键/值javascript对象的键的最佳方式]的可能重复(http://stackoverflow.com/questions/6268679/best-way-to-get-the-key-of-a-key- value-javascript-object) – Iceman