我正在整理一些JavaScript,它们将引入多个JSON文件,这些文件的数据将用于图形中。最后,我需要确定何时达到在$.each()
循环(涉及jQuery)中处理的关联数组的绝对结束,以便触发下一个JSON文件。我已经碰到了一个单层对象的各种解决方案......但是对于一个MULTI-TIERED对象呢?最后一列中的最后一行如何知道它是最后一行?
以下是我正在使用的JSON示例:
{
"Network":{
"Hardware":262464,
"Software":53016,
"Internal Personnel":440202,
"External Personnel":188658,
"Outside Services":1344100,
"Facilities and Overhead":16172,
"Other":92588,
"Total":2397200
},
"Wide Area Network":{
"Hardware":75600,
"Software":18900,
"Internal Personnel":132300,
"External Personnel":56700,
"Outside Services":315000,
"Facilities and Overhead":6300,
"Other":25200,
"Total":630000
}
}
这是我在JSON上运行的循环的粗略概念
function buildColumns(array, parent) {
$.each(array, function(key, value) {
var newParent = $('<column>');
$('<columnBox>').append($('<h2>').html(key)).append(newParent).appendTo(parent);
if(value instanceof Object) buildColumns(value, newParent);
});
}
正如您所见,循环是伪递归的,并且最终可能不是我使用的。但是你去了。
答案 0 :(得分:2)
您可以使用length
属性找出数组中有多少项。
因此,在您的示例中,array.length
将返回项目数。这是假设传递的变量是一个数组。
对象的方法是:
Object.keys(jsonObject).length
另外,因为我不确定您是否正在尝试查找长度的数组或对象,您可以使用下面的代码向对象添加count
方法以查找有多少有孩子:
Object.prototype.count = function() {
oCount = 0;
for(var curObj in this)
if(curObj.hasOwnProperty(prop)) oCount++;
return oCount;
};
如此使用:
console.log(jsonObject.count());
答案 1 :(得分:0)
不保证JavaScript对象的字段顺序是一致的。无论是时间还是不同浏览器之间。见这里:Does JavaScript Guarantee Object Property Order?
所以最后一项并不总是一样。
如果您想拥有最后一项,则需要将对象重新编写为数组。
{
"Network": [
[{"Hardware":262464}],
[{"Software":53016}],
// ...
],
"Wide Area Network":[
[{ "Hardware":75600}],
// ...
],
// ...
}
他