开发者问题收集

计算多维数组中的元素数量

2011-07-26
17577

我有此代码:

loadData : function(jsonArray) {
var id = $(this).attr("id");

for(var i in jsonArray) {
    $("#"+id+" tbody").append('<tr class="entry-details page-1 entry-visible" id="entry-'+i+'"></tr>');

    var header = {
        1: "time",
        2: "project",
        3: "task"
    }
    var col = 1;
    while(col <= jsonArray[i].length) {
        $("#"+id+" tbody #entry-"+i).append("<td>"+jsonArray[i][header[col]]+"</td>")
        col++
}}

它将采用类似于以下内容的 JSON 数组

{"1":{"project":"RobinsonMurphy","task":"Changing blog templates","time":"18\/07\/11 04:32PM"},"2":{"project":"Charli...

代码应循环遍历行(它确实如此),然后循环遍历数据列。

我面临的问题是为了将列数据放在正确的列中,我需要计算一行中返回的数据数量。我尝试了 jsonArray[i].length,但返回结果未定义。

如能提供任何帮助,我们将不胜感激

3个回答

您根本没有任何数组,只有对象。

要计算对象中的项目数,请创建一个简单的函数:

function countInObject(obj) {
    var count = 0;
    // iterate over properties, increment if a non-prototype property
    for(var key in obj) if(obj.hasOwnProperty(key)) count++;
    return count;
}

现在,您可以调用 countInObject(jsonArray[i])

pimvdb
2011-07-26

像这样:

Object.size = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};

// Get the size of an object
var size = Object.size(myArray);

JavaScript 对象的长度

Eddie
2011-07-26

看一下那个小提琴: http://jsfiddle.net/Christophe/QFHC8/

键是

for (var j in jsonArray[i]) {

而不是

while (col <= jsonArray[i].length) {
ChristopheCVB
2011-07-26