zoukankan      html  css  js  c++  java
  • 9.19 JS数组

    数组:相同类型数据的集合
    强类型语言:1数组里面只能存放相同数据类型的数据
         2定义数组的时候需要制定一个长度(可以存放的元素数量)
         3内存空间连续
    集合:1.可以存放任意类型的数据
          2.定义的时候不需要指定长度
          3.内存空间不连续
         
    JS:
      数组:1可以存放任意类型数据
            2定义时候不需要指定长度
            var attr=Array();给数据
        给长度
            【】             使用方括号定义
            length           数组长度
            push             往数组里面追加元素
    数组遍历
    for循环
    foreach()方式遍历
         for(var a in attr)
           {  alert(attr[a]);
            }

    <script type="text/javascript">

    //var attr = Array(1,3.14,"aa");

    /*var attr = [1,3.14,"aa"];
    attr[3] = "bb";
    attr[4] = "cc";
    attr.push("dd");*/

    //alert(attr.length);

    //数组遍历

    /*for(var i=0;i<attr.length;i++)
    {
     alert(attr[i]);
    }*/

    //foreach()方式遍历

    /*foreach(int a in list)
    {
     a;
    }*/

    /*for(var a in attr)
    {
     alert(attr[a]);
    }*/

    //例子
    //10个分数,求总分,最高分,最低分
    //var attr =[89,80,76,49,90,25,85,76,59,40];

    /*var sum = 0;
    for(var i=0;i<attr.length;i++)
    {
     sum += attr[i];
    }

    alert(sum);*/

    /*var zg = 0;

    for(var i=0;i<attr.length;i++)
    {
     if(attr[i]>zg)
     {
      zg = attr[i];
     }
     
    }*/
    //alert(zg);

    /*var zd = zg;
    for(var i=0;i<attr.length;i++)
    {
     if(attr[i]<zd)
     {
      zd = attr[i];
     }
    }
    alert(zd);*/

    //添加去重
    var attr = [2,5,10,16,27];

    var sj = 27;
    var cf = true;

    for(var i=0; i<attr.length;i++)
    {
     if(sj == attr[i])
     {
      cf = false;
      break;
     }
    }

    if(cf)
    {
     attr.push(sj);
     alert(attr.length);
    }
    else
    {
     alert("有重复值");
    }


    //var attr = [1,8,26,4,15,3,7,42,9];

    //对数组元素进行排序
    //冒泡排序
    /*8 6 4 5 3 7 2 9 1   8
    8 6 5 4 7 3 9 2 1     7
    8 6 5 7 4 9 3 2 1     6
    8 6 7 5 9 4 3 2 1     5
    8 7 6 9 5 4 3 2 1     4
    8 7 9 6 5 4 3 2 1     3
    8 9 7 6 5 4 3 2 1     2
    9 8 7 6 5 4 3 2 1     1  */

    //两个相邻的元素进行比较,满足条件元素互换
    //进行比较的轮数是数组的长度减一

    //定义一个交换使用的中间变量
    //var zj = 0;

    //控制比较的轮数
    /*for(var i=0;i<attr.length-1;i++)
    {
     //控制每轮比较的次数
     for(var j=0;j<attr.length-1-i;j++)
     {
      //如果下一个元素大于当前元素
      if(attr[j]<attr[j+1])
      {
       //互换
       zj = attr[j];
       attr[j] = attr[j+1];
       attr[j+1] = zj;
       
      }
     }
    }*/

    //alert(attr[0]);

    //attr.sort();

    //alert(attr[3]);


    //在数组里面查找数据
    var attr = [1,2,3,4,5,6,7,8,9];

    //要查找的值
    var v = 0;


    //循环遍历的方式
    /*var sy = -1;
    for(var i=0;i<attr.length;i++)
    {
     if(attr[i]==v)
     {
      sy = i;
     }
    }

    if(sy == -1)
    {
     alert("没找到数据");
    }
    else
    {
     alert("该数据在数组里面的索引为:"+sy);
    }*/

    //二分法查找数据

    //最小索引
    var minsy = 0;
    var maxsy = attr.length-1;
    var midsy ;

    //循环比较
    while(true)
    {
     //计算中间索引
     midsy = parseInt((minsy+maxsy)/2);
     
     //比较中间值和用户的值
     //判断中间索引的值是否等于用户要查找的值
     if(attr[midsy] == v)
     {
      //如果等于,就退出循环,找到了数据
      break;
     }
     
     //判断是否只剩下两个数据
     if(midsy == minsy)
     {
      //判断两个数据中的另外一个是否等于用户查找的值
      if(attr[midsy+1]==v)
      {
       //找到了值,退出循环
       midsy = midsy+1;
       break;
      }
      else
      {
       //没有找到值,退出循环
       midsy = -1;
       break;
      }
     }
     //用来改范围
     if(attr[midsy]>v)
     {
      maxsy = midsy;
     }
     else
     {
      minsy = midsy;
     }
    }

    alert(midsy);

  • 相关阅读:
    Entity Framework with NOLOCK
    读取的XML节点中带有冒号怎么办?
    一道数学运算题
    mock基本使用
    json-server基本使用
    axios、ajax、fetch三者的区别
    深入响应式原理
    vue组件传值
    递归与循环的区别
    undefined 和null的区别
  • 原文地址:https://www.cnblogs.com/bujianchenxi/p/5905532.html
Copyright © 2011-2022 走看看