zoukankan      html  css  js  c++  java
  • JSON对象长度和遍历方法(转)

    最 近在修改一个HTML页面的JS的时候遍历JSON对象,却怎么也调试不通过。怪这个HTML网页不知道用了什么方法禁止了js错误提示,刚开始的时候不 知道有这个问题,用chrome的开发人员工具都没发现错误,就是在获取 json.length的时候总是undefined,所以就以为自己定义的json方法不对。折腾了一个晚上一点进展都没有,头都整晕了,太晚,最后失 望地洗洗睡了。

    第 二天晚上就是不甘心这个小问题能难倒我,于是静下心来仔细查原因。自己新建一个空的HTML文件在其中测试,发现JSON对象根本没有length属性, 在搜索引擎查找也没有比较权威的参考文档提到json有这个属性。博客也很少有提到 json.length 的。但是奇怪的是我明明记得json有length,我还用过,程序没错,正确运行。

    那是怎么回事呢?最后看某博客一篇文章的时候回想起以前编程的细节,记得以前的json的子对象是个数组而这次的不是,这下终于恍然大悟了。

    以前我使用json的这样的结构:

    var json1={"abc":[{"name":"txt1"},{"name","txt2"}]};

    遍历的方法是:

    for(var i=0;i<json1.abc.length;i++){alert(json1.abc[i].name);}

    这里的json1.abc是一个数组,数组是由2个子json组成的,数组是有length属性的,所以说能工作。

     

    而我这一次的json是这样的:

    var json2={"name":"txt1","name2":"txt2"};

    而json本身没有length属性,所以用length属性自然会出错:

    for(var i=0;i<json2.length;i++){alert(json2[i].text);}

    那么要遍历这样的json怎么办呢?这样做:

    for(var js2 in json2){

    alert( js2+"="+json2[js2]);

    }

     

    既然json没有length属性,如果要知道他的长度怎么办呢?很简单,把上面的遍历改一下就是了:

    var jslength=0;

    for(var js2 in json2){

    jslength++;

    }

    把这段代码写成一个方法,以后调用就行了:

    function getJsonLength(jsonData){

    var jsonLength = 0;

    for(var item in jsonData){

    jsonLength++;

    }

    return jsonLength;

    }

     

    学习计算机编程技术一定要严谨认真,容不得半点马虎,学习最重要是把基础打牢,囫囵吞枣、不求甚解会给工作和学习带来很多隐患,效率上必须打折扣。写下来以自勉!

  • 相关阅读:
    UVA 10462 Is There A Second Way Left?(次小生成树&Prim&Kruskal)题解
    POJ 1679 The Unique MST (次小生成树)题解
    POJ 2373 Dividing the Path (单调队列优化DP)题解
    BZOJ 2709 迷宫花园
    BZOJ 1270 雷涛的小猫
    BZOJ 2834 回家的路
    BZOJ 2506 calc
    BZOJ 3124 直径
    BZOJ 4416 阶乘字符串
    BZOJ 3930 选数
  • 原文地址:https://www.cnblogs.com/huojing/p/3957671.html
Copyright © 2011-2022 走看看