JavaScript数组小结

创建数组的两种方式

  • 第三种内置对象 Array 数组内置对象

  • 创建数组的两种方式

    • 利用数组字面量[]

      • var arr = []; // 创建一个空数组
        var arr1 = [1, 2, 3];
        console.log(arr1[0]);

    • 利用 new Array()

      • var arr2 = new Array(); // 创建了一个空的数组
        var arr3 = new Array(5); // 这个5 表示数组长度为5 里面有5个空的数组元素
        console.log(arr3);
        var arr4 = new Array(2, 3); // 等价于[2,3] 这样写表示里面有两个数组元素是2和3
        console.log(arr4);

  • 检测是否为数组的方法

    • instanceof 与 Array.isArray()

      • function reverse(arr) {
           // if (arr instanceof Array) {
           if (Array.isArray(arr)) {
               var newArr = [];
               for (var i = arr.length - 1; i >= 0; i--) {
                   newArr[newArr.length] = arr[i];
               }
               return newArr;
           } else {
               return 'error 这个参数要求必须是数组格式[1,2,3]'
           }
        }
        console.log(reverse([1, 2, 3])); //[3,2,1]
        console.log(reverse(1, 2, 3));

    • 检测是否为数组

      • instanceof 运算符 它可以用来检测是否为数组

        • var arr = [];
          console.log(arr instanceof Array);
          var obj = {};
          console.log(obj instanceof Array);
      • Array.isArray(参数) H5新增的方法 IE9以上版本才支持

        • var arr1 = [];
          console.log(Array.isArray(arr1));
          var str = '';
          console.log(Array.isArray(str));

添加删除数组元素的方法

  • 添加数组元素

    • arr.push() 在我们数组的末尾 添加一个或者多个数组元素 push 推

      • var arr = [1, 2, 3];
        // arr.push(4, '猪猪侠', '李知恩');
        console.log(arr.push(4, '猪猪侠', '李慧珍')); // 长度
        console.log(arr);

      • push 是可以给数组末尾追加新的元素

      • push()参数直接写 数组元素就可以了

      • push完毕之后,打印一下返回的结果是新数组的长度

      • 原数组也会发生变化

    • arr.unshift 是可以给数组前面追加新的元素

      • console.log(arr.unshift('1', '猪猪侠')); // 长度
        console.log(arr);
      • unshift 是可以给数组前面追加新的元素

      • unshift() 参数直接写数组元素就可以了

      • unshift() 完毕之后,打印一下返回的结果是新数组的长度

      • 原数组也会发生变化

  • 删除数组元素

    • arr.pop()

    • 他可以删除数组的最后一个元素

      • console.log(arr.pop()); // 被删除的那个元素
        console.log(arr);
      • pop 是可以删除数组的最后一个元素 记住一次只能删除一个元素

      • pop() 没有参数

      • pop() 完毕之后,返回的结果是 被删除的那个元素

      • 原数组也会发生变化

    • arr.shift()

    • 他可以删除数组的第一个元素

      • console.log(arr.shift()); // 被删除的那个元素
        console.log(arr);
      • shift 是可以删除数组的第一个元素 记住一次只能删除一个元素

      • shift() 没有参数

      • shift() 完毕之后,返回的结果是 被删除的那个元素

      • 原数组也会发生变化

  • 案例

    • push 筛选数组

      • // 有一个包含工资的数组[1500,1200,2000,2100,1800],要求把数组中工资超过2000的删除,剩余的放到新的数组里面
        var arr = [1500, 1200, 2000, 2100, 1800];
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < 2000) {
                // newArr[newArr.length] = arr[i];
                newArr.push(arr[i]); // 把满足条件的数组元素追加到新数组里面
            }
        }
        console.log(newArr);

    • sort 排序

      • var arr1 = [1, 100, 12, 25, 38, 44, 55, 64, 75, 81, 91, 8, 9, 7, 5, 4, 3, 2, 6];
        for (var i = 0; i < arr1.length; i++) {
            for (var j = 0; j < arr1.length - i - 1; j++) {
                if (arr1[j] > arr1[j + 1]) {
                    var temp = arr1[j];
                    arr1[j] = arr1[j + 1];
                    arr1[j + 1] = temp;
                }
            }
        }

      • 数组排序(冒泡排序)

        var arr1 = [3, 40, 70, 1, 82, 100, 22, 2, 38, 44];
        arr1.sort(); // 如果排序的数组元素都是个位数   直接arr1.sort就可以  
        console.log(arr1);

      • var arr2 = [3, 40, 70, 1, 82, 100, 22, 2, 38, 44];
        arr2.sort(function(a, b) {
            return a - b; // 升序的顺序排列
            // return b - a; // 降序的顺序排列
        }); // 如果是双位数或者更多位数需要加上function
        console.log(arr2);

    • reverse 数组翻转

      • var arr = ['关羽', '张飞', '赵云'];
        var newArr = []
        for (var i = arr.length-1; i >= 0; i--) {
            newArr[newArr.length] = arr[i]
        }
        console.log(newAee)
        var arr = ['关羽', '张飞', '赵云'];
        arr.reverse();
        console.log(arr);

获取数组元素索引号的方法

  • 获取数组元素索引号的方法 arr.indexOf(数组元素) i 作用就是返回该数组元素的索引号 从前面开始查找

  • 它只返回第一个满足条件的索引号

  • 它如果在该数组里面找不到元素 则返回的就是 -1

    • var arr = ['关羽', '张飞', '赵云', '刘备', '赵云'];
      console.log(arr.indexOf('张飞')); // 1
      console.log(arr.indexOf('赵云')); // 2
      console.log(arr.indexOf('曹操')); // -1  

  • 返回数组元素索引号的方法 lastIndexOf(数组元素) 作用就是返回该数组元素的索引号 从后面开始查找

    • var arr = ['关羽', '张飞', '赵云', '刘备', '赵云'];
      console.log(arr.lastIndexOf('赵云')); // 4
      console.log(arr.lastIndexOf('姜维')); // -1

数组去重

  • 数组去重 ['c','a','z','a','x','a','x','c','b']要求去除数组中的重复元素

    • 目标:把旧数组里面不重复的元素选取出来方法新数组中,重复的元素只保留一个,放到新数组中去重

    • 核心算法:我们遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加

    • 我们怎么知道该元素没有存在?利用 新数组.indexOf(旧数组元素) 如果返回是-1就说明新数组里面没有该元素

    • 封装一个去重的函数 unique() 独一无二的函数 [c,a,z,x,b]

      • function unique(arr) {
            if (arr instanceof Array) {
                var newArr = [];
                for (var i = 0; i < arr.length; i++) {
                    if (newArr.indexOf(arr[i]) === -1) {
                        // newArr[newArr.length] = arr[i];
                        newArr.push(arr[i]);
                    }
                }
                return newArr;
            } else {
                return '请输入数组形式';
            }
        }
        var demo = unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']);
        console.log(demo);
        var demo1 = unique(['关羽', '张飞', '李逵', '张三', '魏军', '关羽', '李逵', '张三']);
        console.log(demo1);

数组转换为字符串

  • 之前的方法

    • var arr = [1, 2, 3, 4, 5];
      var str = '';
      for (var i = 0; i < arr.length; i++) {
          str += arr[i];
      }
      console.log(str)

  • arr.toString() 将我们的数组转换为字符串

    • var num = 100;
      console.log(num.toString());
      var arr = [1, 2, 3];
      console.log(arr.toString());

  • arr.join('分隔符') 加入

    • var arr1 = ['red', 'green', 'blue'];
      console.log(arr1.join());
      console.log(arr1.join(''));
      console.log(arr1.join('-'));
      console.log(arr1.join('&'));

  • arr1.concat(arr2) 拼接两个或多个数组 不影响原数组 返回一个新的数组 这个不会影响原来数组

    • var arr1 = ['关羽', '张飞', '刘备'];
      var arr2 = ['赵云', '马超', '姜维'];
      var arr3 = [1, 2, 3, 4, 5, 6];
      var arr4 = [7, 8, 9, 10, 11];
      console.log(arr1.concat(arr2));
      console.log(arr3.concat(arr4));
      console.log(arr1);
      console.log(arr2);
      console.log(arr2.concat(arr3));
      console.log(arr3.concat(arr2));
      console.log(arr2);
      console.log(arr3);

  • arr.slice(begin,end) 数组截取[begin,end) 返回的结果是被截取的新数组 这个不会影响原来数组

    • var arr1 = ['曹操', '曹丕', '曹植', '曹彰', '曹洪', '曹真'];
      console.log(arr1.slice(1, 4));
      console.log(arr1);
      //5. 数组删除 splice(第几个开始,要删除的个数)   返回被删除的新数组  这个会影响原来数组
      var arr2 = ['孙坚', '孙权', '孙策', '孙亮', '孙鲁班'];
      console.log(arr2.splice(2, 3));
      console.log(arr2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值