这是我正在谈论的JSON,
{
"0": {
"entry_id": "4",
"category_id": "3",
"title": "lorem ipusm"
},
"1": {
"entry_id": "5",
"category_id": "3",
"title": "lorem ipusm dolor"
},
......
......
"total_entry": 270,
"pending": 7,
"url": "http://domainhere.tld/url"
}
我需要读取total_entry,pending等字段的值,然后还需要使用0,1等键来遍历所有对象(可以继续,本例中只显示了两个。这就是我正在尝试
var makelist;
for (var i = 0; i < objData.length; i++) {
makelist='<li>'+ objData[i].title + '</li>';
}
$('#conatiner').append(makelist);
它适用于使用0,1等键来获取对象,但仅当json不包含其他字段(total_entry等等)时才有效。我如何阅读这两个字段?
答案 0 :(得分:2)
使用jQuery each iterate function迭代对象。
描述:一个通用的迭代器函数,可用于 无缝迭代对象和数组。数组和数组 具有length属性的对象(例如函数的arguments对象) 由数字索引迭代,从0到length-1。 其他对象是 通过其命名属性进行迭代。
对于不 Not-a-Number的每个属性/键,添加新的列表项:
var obj = {
"0": {
"entry_id": "4",
"category_id": "3",
"title": "Title for item 0"
},
"1": {
"entry_id": "5",
"category_id": "3",
"title": "Title for item 1"
},
"total_entry": 270,
"pending": 7,
"url": "http://domainhere.tld/url"
};
var makelist = '';
$.each(obj, function( i, n ) {
if ( !isNaN(parseInt(i)) ) makelist+='<li>'+ n.title + '</li>';
});
$('#container').append(makelist);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="container"></ul>
答案 1 :(得分:1)
var myJson = {
"0": {
"entry_id": "4",
"category_id": "3",
"title": "lorem ipusm"
},
"1": {
"entry_id": "5",
"category_id": "3",
"title": "lorem ipusm dolor"
},
"50": {
"entry_id": "50",
"category_id": "30",
"title": "lorem ipusm dolor number 50"
},
"total_entry": 270,
"pending": 7,
"url": "http://domainhere.tld/url"
}
//for all the keys in myJson
for (var k in myJson){
//get 'title' if key is a number more than -1
if (k > -1){
console.log(myJson[k].title)
}
else{
//get value of the key
console.log(myJson[k])
}
}
答案 2 :(得分:0)
您可以使用循环通过对象中的索引项进行迭代,并使用以下语法迭代对象的其他属性:
for (var prop in objData) {
if (objData.hasOwnProperty(prop) && isNaN(prop)) {
// use objData[prop]
}
}
hasOwnProperty检查将过滤掉不直接包含在对象中的任何属性(从基类继承)。
答案 3 :(得分:0)
这是获取所有对象的整数键值的方法:
var obj = { '0': 'Zero', 1: 'One', '2': 'Two', somekey: 'somevalue', someotherkey: 'someothervalue' }, propName, arr = [];
for(propName in obj)
{
if(obj.hasOwnProperty(propName)) // Avoids using keys/values from possibly existing prototype chain.
{
if(!isNaN(parseInt(propName, 10))) // Checks, if key name is a number by trying to parse and validating it.
{
arr.push(obj[propName]); // Adds key's value to array (as example).
}
}
}
console.log(arr);
只需用你的替换样本对象,并用你的(makelist)代码替换内部if子句的内容。
答案 4 :(得分:0)
您可以将jquery的每个函数迭代为:
var makelist;
$.each(objData, function(i, data){
makelist = '<li>'+data.title+'</li>';
$("#conatiner").append(makelist);
});
答案 5 :(得分:0)
用于(.. in ..),然后你得到所有的键,而不仅仅是数字。要检查值是否为对象,可以使用typeof。
var makelist = '';
for (var i in obj) {
if (typeof obj[i] == 'object')
makelist='<li>'+ obj[i].title + '</li>';
else
makelist += '<li>' + obj[i] + '</li>';
}
$('#conatiner').append(makelist);