+发表新主题
查看: 1555|回复: 0

[代码片段] js 关联数组

[复制链接]

[代码片段] js 关联数组

[复制链接]
边缘世界 发表于 2015-12-16 22:09:20 浏览:  1555 回复:  0 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1. 关联数组(hash数组):可自定义元素下标名称的数组

     索引数组:自动从0开始分配连续不重复的序号下标

        Eg    幂幂 81 53 89

              0  1  2  3

     如何创建关联数组:2种方式:

      1. 先创建普通空数组,再追加自定义下标的元素

         var ym=[];

         ym["sname"]="幂幂";

         ym["shx"]=81;

         ym["yw"]=53;

         ym["yy"]=89;

                       console.log(ym);

               220056b3jz3ta35p352nqg.png

       关联数组需要注意一下几点:

     1. 关联数组的length属性失效

    例如:

         var ym=[];

         ym["sname"]="幂幂";

         ym["shx"]=81;

         ym["yw"]=53;

         ym["yy"]=89;

  console.log(ym.length);

220056b3jz3ta35p352nqg.png

       2.关联数组中的key不能重复,否则后面出现的key中值会覆盖前面的key

            var ym=[];

         ym["sname"]="幂幂";

         ym["shx"]=81;

         ym["yw"]=53;

         ym["yw"]=63;

         ym["yy"]=89;

         console.log(ym);

   其输出结果如下:

          220056b3jz3ta35p352nqg.png


       3.关联(hash)数组优势:查找极快!和元素个数无关!

       例如:var ym=[];

         ym["sname"]="幂幂";

         ym["shx"]=81;

         ym["yw"]=53;

         ym["yy"]=89;

     console.log(ym["yy"]);

         220056b3jz3ta35p352nqg.png

     2. 创建数组同时,初始化元素内容:

         var ym={"sname":"幂幂","shx":81,"yw":53,"yy":89};

                  key   value  

  Eg

         var ym={"sname":"幂幂","shx":81,"yw":53,"yy":89};

          console.log(ym);

          console.log(ym["yw"]);

         

其输出结果如下:

         220056b3jz3ta35p352nqg.png


         关联数组中保存的是多个key/value

                           键 值

    如何遍历关联数组(hash数组)

       for(var key in arr){//依次取出arr中每个key无法取出key中的值

                    arr[key];  //获得当前正在遍历的key中存储的值

                   }


     var ym={"sname":"幂幂","shx":81,"yw":53,"yy":89};

        for(var key in ym){

         console.log(key+":"+ym[key]);

            }  

       220056b3jz3ta35p352nqg.png


Eg:利用hash数组去除索引数组中重复数组,并统计出原数组中每个值出现的次数

  1. var arr=[1,2,1,3,4,3,6,4,5,6];

  2. var hash=[];

  3. for(var i=0;i<arr.length;i++){

  4.       if(hash[arr[i]]===undefined){

  5.          hash[arr[i]]=1;

  6.   }else{hash[arr[i]]++;}

  7. }

  8.          console.log(hash);

  9.    arr=[];// 清空arr中旧的数据

  10.       //依次将hash中每个key,追加到arr中

  11. for(var key in hash){

  12.       arr[arr.length]=(key-=0);   //将key从字符串转换为数字

  13. }

  14.    console.log(arr); //[1,2,3,4,5,6]
复制代码
  其输出的结果如下:

220056b3jz3ta35p352nqg.png
回复

使用道具 举报


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 赣南网

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4

用微信扫一扫

赣南网