JavaScript数组

数组

1. 数组的基本概念

1.1 数组的基本概念

1)

数组通常用来保存一组相同类型的值 ( 如 : 咱班所有同学的姓名 )

对象通常是用来保存某个具体的物体的相关属性和方法 ( 如 : 咱班某个同学的信息 )

2)

数组是有序的值的集合,对象是无序的值的集合

1.2 数组的创建

1) 字面量
var arr = [ ] ;
2) 构造函数
var arr2 = new Array ( 10 ) ;
 var arr3 = new Array("a");
           console.log(arr3);
           var arr4 = new Array(10, 20);
           console.log(arr4);
3) 新增元素
var arr5 = [];
      arr5[0] = "a";
      arr5[1] = "b";
      arr5[2] = "c";
      arr5[10] = "d";
      console.log(arr5); //长度为11
4) 取值
 arr5[0] = "a";
      arr5[1] = "b";
      arr5[2] = "c";
      arr5[10] = "d";
      console.log(arr5);
console.log(arr5[0]);
console.log(arr5[3]); 
console.log(arr5[20]);//越界,取到undefined
5) 改值
 arr5[0] = "a";
      arr5[1] = "b";
      arr5[2] = "c";
      arr5[10] = "d";
      console.log(arr5);
console.log(arr5[0]);
console.log(arr5[3]); 
console.log(arr5[20]);//越界,取到undefined
arr5[0] = "aa";
console.log(arr5);
6) 遍历
 var arr6 = [10, 20, 30, 40, 50];
      for (var i = 0; i < arr6.length; i++) {
        console.log(arr6[i]);
      }

2. 数组中一些常用方法

2.1 push( )

向数组尾部添加元素 , 元素填括号内做参数 , 返回新增元素后的数组的长度,原数组发生变化

2.2 pop( )

从数组尾部删除一个元素

2.3 unshift( )

向数组头部添加元素

2.4 shift

从数组头部删除一个元素

2.5 sort( )

对数组进行排序 , 1. 针对相同位数的数值进行排序 2. 如果不是相同的位数或者不是数值类型将平等的排在一起

//真正的实现数值排序 是以一个函数作为参数
      /*  var arr = [23, 17, 5, 66, 9];
      arr.sort(function (a, b) {
        //从小到大
        //return a - b;
        //从大到小
        return b - a;
      });
      console.log(arr); */

2.6 reverse( )

数组翻转

2.7 join( )

将数组中所有的元素以指定的连字符拼接成为字符串

2.8 slice( m,n )

如果是1个参数,就从该参数表示的索引位开始往后截取数组,直至结束,返回截取的数组,原数组不变 ; 如果是2个参数,第1个参数表示截取的起始索引,第2个表示截取的结束索引,不包含结束索引位上的元素,返回截取的数组,原数组不变

2.9 splice( )

如果是1个参数,就从该参数表示的索引位开始往后截取数组,直至结束,返回截取的数组,原数组改变,变成剩余元素的一个数组

如果是2个参数,第1个参数表示截取的起始索引,第2个表示截取的元素个数,不包含结束索引位上的元素,返回截取的数组,原数组改变,变成剩余元素的一个数组

如果是3个及以上的参数,,第1个参数表示截取的起始索引,第2个表示截取的元素个数,第3个及后续的参数会从截取的起始索引位添加原数组中

2.10 concat( )

合并数组

var arr = [1, 2];
      var brr = arr.concat([3, 4], 5); //如果参数是一个数组,将数组中的元素提取出来扔到原数组中,并返回,如果不是一个数组,直接扔到原数组里,并返回
      console.log(brr); //[1,2,3,4,5]

2.11 indexOf( )

返回参数在数组中的索引,如果数组中没有参数表示的值,返回 -1 从前往后找

2.12 lastIndexOf( )

返回参数在数组中的索引,如果数组中没有参数表示的值,返回 -1 从后往前找

2.13 includes( )

判断一个数组中是否含有某个元素,含了,返回true,不含,返回false

2.14 forEach( )

遍历

2.15 map( )

遍历

2.16 filter( )

过略出符合条件的数组元素,返回一个新数组

//var arr = [10, 20, 30, 40, 50];
      //var brr = arr.filter((v) => v > 20 && v < 50);
      /* var brr = arr.filter(function (v) {
        return v > 20 && v < 50;
      });
      console.log(brr); */

2.17 some( )

判断数组中是否有元素满足指定的条件,如果有就返回true

 /*  var arr = [10, 20, 30, 40, 50];
      var flag = arr.some((v) => v > 20);
      console.log(flag); */

2.18 every( )

判断数组中是否所有元素满足指定的条件,如果有返回true ( 同上 )

2.19 reduce( )

累计效果的

/*  var arr = [10, 20, 30, 40, 50];
      var result = arr.reduce((a, b) => {
        //第一个参数第1次表示的是数组中的第1个元素,第二个参数表示数组中的第2个元素,取出之后进行操作,这个操作一般会放到return后面
        //第一个参数第2次表示的是return后面的结果,第二个参数表示数组中的第3个元素,再次进行操作
        //以此类推,直至元素全部取完,将最终结果作为返回值给到result
        //console.log(a, b);
        //累计求和
        return a + b;
      });

      console.log(result); */

2.20 find( )

找到符合条件的第一个元素

2.21 findIndex( )

找到符合条件的第一个元素的索引

2.22 Array.from( )

将一个伪数组转为一个数组

3. 数组 : 冒泡排序

冒泡排序:数组中的元素两两比较,如果前一个比后一个大,交换值,一轮结束后,这些元素中的最大值排到了最后

​ 1. 轮数 轮数为length-1

​ 2. 每轮比较的次数 length-1-i i表示轮数

var arr1 = [78, 23, 65, 9, 17];
      function bubblesort(arr) {
        for (var i = 0; i < arr.length ; i++) {
          for (var j = 0; j < arr.length ; j++) {
            if (arr[j] > arr[j + 1]) {
              var t = arr[j];
              arr[j] = arr[j + 1];
              arr[j + 1] = t;
            }
          }
        }
        return arr;
      }
      console.log(bubblesort(arr1));

4. 数组 : 选择排序

假设第一个值为最小值,minIndex指向最小值的索引,让minIndex指向的这个值和后面所有的值进行比较,后边有比minIndex指向的这个值小的,改变minIndex的值(重复赋值),再让minIndex指向的这个继续和后面的值进行比较,一轮结束后,minIndex存的是最小值的索引。假设第二个值是最小值,以此类推

var arr1 = [78, 23, 65, 9, 17];

      function selectSort(arr) {
        for (var i = 0; i < arr.length - 1; i++) {
          var minIndex = i;
          for (var j = i + 1; j < arr.length; j++) {
            if (arr[minIndex] > arr[j]) {
              minIndex = j;
            }
          }
          //内层循环走完,minIndex指向的就是最小值索引
          var t = arr[minIndex];
          arr[minIndex] = arr[i];
          arr[i] = t;
        }
        return arr;
      }
      console.log(selectSort(arr1));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值