javascript中的数组介绍与方法以及选择冒泡排序

**声明数组**
1、通过new创建数组
参数:传入任意的数据,存储到数组中
    var arr = new Array(100,true,"hello");
    alert(arr);
2、省略new运算符创建数组
    var arr = Array(100,true,"hello");
    alert(arr);

3、数组常量进行赋值(JS一般使用中括号[])

    var arr = [100,true,"hello"];
    alert(arr);

以上三个,结果都是下面这张图
请添加图片描述
声明长度为10的数组,数组中没有数组

    var arr = new Array(10);
    alert(arr);

等价于

    var arr = Array(10);
    alert(arr);

请添加图片描述

    var arr2 = [10];
    alert(arr2);

请添加图片描述
数组的属性:
数组.length 返回值数组[元素]的个数
元素:将数组存储的每一个数据,叫做数组的元素
访问数组的元素:
数组[下标] 下标是从0开始的

         <script>
             var arr = [100,true,"hello"];
             for(var i = 0;i<arr.length;i++){
                 document.write(arr[i]+ "<br/>");
             }
         </script>

请添加图片描述

         Math..random() 随机[0,1)
         随机0~9的整数
         parseInt(Math.random() * 10)
         <script>
             var arr = new Array(10);
             for(var i=0;i<arr.length;i++){
                 arr[i] = parseInt(Math.random() * 10);
             }
             alert(arr);
         </script>

请添加图片描述
for循环

         <script>
             var arr = [10,20,30,40,50];
             //在页面上分别将每一个数输出
             for(var i = 0; i < arr.length; i++){
                 document.write(arr[i] + "<br/>");
             }
         </script>

请添加图片描述
for…in遍历 快速遍历、快速枚举

         <script>
             var arr = [10,20,30,40,50];
             for(var i in arr){
                 document.write(arr[i] + "<br/>");
             }
         </script>

请添加图片描述
数组的方法
结构:从同一头进,从同一头出
特点:先进后出
数组的两个方法形成栈结构:
push
格式:数组.push(参数,参数2…);
功能:给数组的末尾添加元素
返回值:插完元素以后数组的长度
pop
格式:数组.pop()
参数:没有参数
返回值:取下一个元素
功能:从数组末尾取下一个元素

        <script>
            var arr = ["北京", "上海"];
            arr.push("成都");
            alert(arr);
        </script>

请添加图片描述

        <script>
            var arr = ["北京","上海","广州"];
            var res = arr.pop();
            alert(res);
            alert(arr);
        </script>

请添加图片描述
请添加图片描述
队列结构
结构:从末尾进,从头部出
特点:先进先出
push
格式:数组.push(参数,参数2…);
功能:给数组的末尾添加元素
返回值:插完元素以后数组的长度
shift()
格式:数组.shift()
参数:没有参数
功能:从数组的头部取下一个元素
返回值:取下的元素
unshift()
格式:数组.unshift(参数,参数2…);
功能:从数组的头部插入元素
返回值:插完元素以后的长度

        <script>
            var arr = ["唐朝","元朝","清朝"];
            var res = arr.shift();
            alert(res);
            alert(arr);
        </script>

请添加图片描述
请添加图片描述

        <script>
            var arr = ["唐朝","元朝","清朝"];
            var res = arr.unshift("隋朝","商汤");
            alert(res);
            alert(arr);
        </script>

请添加图片描述
请添加图片描述
concat()
1、拷贝原数组,生成新数组
2、合并数组
格式:数组.concat(数组,数据…)
返回值:合并成的新数组,原数组不会改变

        <script>
            var arr1 = [10,20,30];
            var arr2 = [50,60,70];
            var newArr = arr1.concat(arr2,"hello",true);
            alert(newArr);
            alert(newArr.length);//8
            alert(arr1);//10,20,30
        </script>

请添加图片描述
splice()
格式:数组.splice(start,length,数据1,数据2…)
参数:start 开始截取的长度
length 截取的元素的长度
第三个参数开始:在start位置,插入的元素
返回值:截取下来的元素组成的数组
增加

           <script>
               var arr = [10,20,30,40,50];
               var res = arr.splice(2,0,"hello");
               alert(arr);
               alert(res);
           </script>

请添加图片描述
请添加图片描述
删除

           <script>
               var arr = [10,20,30,40,50];
               var res = arr.splice(1,2);
               alert(arr);
               alert(res);
           </script>

请添加图片描述
请添加图片描述
修改(先删除,在修改)

           <script>
               var arr = [10,20,30,40,50];
               var res = arr.splice(2,1,"hello");
               alert(arr);
           </script>

请添加图片描述

slice()方法
格式:数组.slice(start,end);
注意:范围是[start,end) end不包括
返回值:生成的新数组,原数组不会发生任何的改变

           <script>
               var arr = [10,20,30,40,50,60];
               var newArr = arr.slice(1,4);
               alert(newArr);
               alert(arr);
           </script>

请添加图片描述

join()
格式:数组.join(字符串)
功能:将数组中的元素,用传入的拼接符,拼接成一个字符串
返回值:拼接好的字符串

           <script>
               var arr = [10,20,30];
               var str = arr.join("xxx");
               alert(str);
               alert(arr);
           </script>

请添加图片描述
请添加图片描述
reverse 逆序

           <script>
               var arr = [true,"hello",100];
               arr.reverse();
               alert(arr);
           </script>

请添加图片描述
数组排序
sort
格式:数组.sort()默认按照字符串从小到大排序
参数:一个函数,代表要怎么去进行排序(固定用法)
从小到大

           <script>
               var arr = [1,10,20,15,25,5];
               arr.sort(function(value1,value2){
                   return value1 - value2;
               })
               alert(arr);
           </script>

请添加图片描述
从大到小 排序输出

           <script>
               var arr = [1,10,20,15,25,5];
               arr.sort(function(value1,value2){
                   return value2 - value1;
               })
               alert(arr);
           </script>

请添加图片描述
练习

    <script>
        var arr1 = [10,20,30,40];
        var arr2 = arr1.concat();
        arr2.push(50,60);
        alert(arr1);
        alert(arr2);
    </script>

请添加图片描述
请添加图片描述
二维数组

    <script>
        var arr1 = [10,20,30];
        var arr = [true,100,"hello",arr1];
        alert(arr.length);
        alert(arr[3] == arr1);
        alert(arr[3]);
        alert(arr1[1]);
        alert(arr[3][1]);
    </script>

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
通过循环按行顺序为一个5x5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角

    <script>
        var arr = [
            [1,2,3,4,5],
            [6,7,8,9,10],
            [11,12,13,14,15],
            [16,17,18,19,20],
            [21,22,23,24,25]
        ];
        for(var i = 0; i < arr.length;i++){
            for(var j = 0;j < i;j++){
                if(i>=j){
                    document.write(arr[i][j] + "&nbsp");
                }
            }
            document.write("<br/>");
        }
    </script>

请添加图片描述
冒泡排序:
规则:前后两个数两两进行比较,如果符合交换条件就交换两个数位
分析:比较轮数 = 数组长度 - 1;
每一轮比较的次数 = 数组长度 - 当前的轮数

      <script>
          var arr = [9,8,7,6,5,4];//从小到大
          for(var i = 0;i < arr.length-1;i++){
              //每一轮比较的次数
              for(var j = 0;j < arr.length-(i+1); j++) {
                  if(arr[j] > arr[j+1]){
                      //交换两个数位置
                      var tmp = arr[j];
                      arr[j] = arr[j+1];
                      arr[j + 1] = tmp;
                  }
              }
          }
          alert(arr);
      </script>

请添加图片描述
选择排序(打擂台法)
规则:选出一个位置,这个位置上的数,和后面所有的数进行比较,如果比较出大小就叫交换两个数位置
规律:每一轮都能选出一个最小的数,放在正确的位置。
比较的轮数 = 数组长度 - 1
每一轮比较的次数 = 数组长度 - 当前的轮数

      <script>
          var arr = [9,8,7,6,5,4];
          for(var i=0;i<arr.length-1;i++){
              //被比较数的下标
              for(var j = i+1;j<arr.length;j++){
                  if(arr[i]>arr[j]){
                      var tmp = arr[i];
                      arr[i] = arr[j];
                      arr[j] = tmp;
                  }
              }
          }
          alert(arr);
      </script>

请添加图片描述
数组练习
随机给出一个五位以内的数,然后输出该数共有多少位,每位分别是什么

    <script>
        function countNum(num){
            //声明一个数组,存放取下的数
            var arr = [];
            while(num){
                arr.push(num % 10);
                num = parseInt(num / 10);
            }
            arr.reverse();
            alert("一共是: "+arr.length + "位" +", 每一位分别是" + arr);
        }
        countNum(12345);
    </script>

请添加图片描述
编写函数has(arr,60) 判断数组中是否存在60这个元素,返回布尔类型

    <script>
        function has(arr,item){
            for(var i = 0;i < arr.length; i++){
                if(arr[i] == item){
                    return true;
                }
            }
            return false;
        }
        alert(has([10,20,30], 50));
    </script>

请添加图片描述
严格模式:写在哪个作用域下,在哪个作用域下生效
use strict
[注]尽量注意不要严格模式写在全局
用了严格模式,会有什么交集:
1、全局变量声明时,必须加var
新增数组的方法
indexof()
格式:数组.index(item,start);
参数:item任意的数据
start 下标 可以不传入,默认是0
功能:在数组中查找第一次出现item元素下标,从start开始去查找
返回值:-1 没有查找到
>=0 查找到的元素的下标

          <script>
              var arr = [10,20,30,40,50,20,30];
              var index = arr.indexOf(120,2);
              alert(index);
          </script>

请添加图片描述

    数组遍历:for循环
             for....in
             forEach(ECMA5新增)
  <script>
          var arr = [10,20,30,40,50];
          arr.forEach(function(item,index,arr){
                //  item当前遍历到的数组
                //  index当前遍历到元素的下标
                //  arr数组本身
         document.write(item + ","+index + ","+arr + "<br/>");
       });
  </script>

请添加图片描述
map映射

<script>
    var arr = [10,20,30,40,50];
    var newArr = arr.map(function(item,index,arr){
        //遍历要做的事情,映射关系
        return item*1.3;
    });
    alert(newArr);
    alert(arr);
</script>

请添加图片描述
请添加图片描述
filter()过滤

<script>
    var arr = [10,20,30,40,50];
    var newArr = arr.filter(function(item,index,arr){
        return item>20;
    });
    alert(newArr);
    alert(arr);
</script>

请添加图片描述
请添加图片描述
some 某些
【注】在数组中查找是否符合条件的元素,有返回true,没有返回false
短路操作:只要找到符合条件的元素,后面的循环就停止了。

<script>
    var arr = [10,20,30,40,50];
    var res = arr.some(function(item,index,arr){
        alert(item);
        //过滤的条件
        return item>10;
    });
    alert(res);
    alert(arr);
</script>

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
every 每一个
【注】在数组中查找每一个元素是否有符合条件,符合返回true,不符合返回false
短路操作:只要找到不符合条件的元素,后面的循环就停止了

<script>
    var arr = [10,20,30,40,50];
    var res = arr.every(function(item,index,arr){
        alert(item);
        //过滤的条件
        return item<20;
    });
    alert(res);
    alert(arr);
</script>

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
reduce 归并

<script>
    var arr = [10,20,30,40,50];
    var res = arr.reduce(function(prev,next,index,arr){
        // prev 第一次是下标为 0的元素
        // 第二次开始 上一次遍历return的值
        // next 从下标1开始,当前遍历别的元素
        // arr数组本身
        alert(prev + ", " + next);
        return prev + next;
    });
    alert(res);
</script>

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值