关于javascript:JSON对象的长度

Length of a JSON object

本问题已经有最佳答案,请猛点这里访问。

此函数正在生成一个包含JSON对象的数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var estoque={};
function unpack_estoque(tnm,total,estoque_vl,id,tid,st) {
    tnm=tnm.split("|");
    total=total.split("|");
    estoque_vl=estoque_vl.split("|");
    id=typeof id != 'undefined' ? id.split("|") : null;
    tid=typeof tid != 'undefined' ? tid.split("|") : null;
    st=typeof st != 'undefined' ? st.split("|") : null;

    for (var i in tnm)
        estoque[i]={
           "id": id != null ? id[i] : null,
           "tid": tid != null ? tid[i] : null,
           "total": total[i],
           "estoque": estoque_vl[i],
           "tnm": tnm[i],
           "st": st != null ? st[i] : null
        };
}

现在,如何使estoque长度循环通过收集的项目?

estoque.length返回undefined,而for (var i in estoque)通过json对象而不是estoque()根数组循环。

谢谢。


1
2
var estoque = {}; //object estoque.length will not work (length is an array function)
var estoque = new Array(); //estoque.length will work

你可以试试:

1
2
3
4
5
6
7
8
9
10
 var estoque = new Array();
 for (var i in tnm)
    estoque.push({
       "id": id != null ? id[i] : null,
       "tid": tid != null ? tid[i] : null,
       "total": total[i],
       "estoque": estoque_vl[i],
       "tnm": tnm[i],
       "st": st != null ? st[i] : null
    });

现在,Estoque将是一个数组(可以作为一个数组遍历)。


1
2
3
a={a:{},b:{},c:{}}
Object.keys(a).length
3


因为它是一个数组方法,而不是一个对象,所以您不能让它工作。可以使用tnm的长度属性作为度量。然后您可以使用:

1
2
3
4
var tnmLength = tnm.length;
for (i=0, i>tnmLength - 1; i++) {
     estoque[tnm[i]] = {};
}

循环遍历tnm数组中的所有项。