开发者

Length of a JSON object [duplicate]

This question already has answers here: Length of a JavaScript object (43 answers) Closed 3 years ago开发者_C百科.

This function is generating a array with json objects on it:

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
        };
}

Now how do i get the estoque length to loop through the collected items?

estoque.length returns undefined while for (var i in estoque) loops through JSON object and not estoque[] root array.

Thanks.


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

You could try:

 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
    });

Now estoque will be an array (which you can traverse as one).


You will not get that to work as it is an array method, not an object. You can use the length property of tnm as your measure. Then you can you can use:

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

To loop through all of the items in the tnm array.


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜