【DS】C2--数组

247 阅读4分钟

C2--数组

数组式编程语言中的内建类型。

1.数组定义

一个存储元素的线性集合(对象),元素可以通过索引(属性--->字符串)来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量。

JavaScript中的数组是一种特殊的对象。

2.使用数组
  1. 创建数组

    • []操作符

      var numbers = [];
      var numbers = [1,2,3,4,5]
      

      数组中的元素不必是同一种数据类型

    • 使用Array的构造函数

      var numbers = new Array();
      //传入一组元素作为数组的初始值
      var numbers = new Array(1,2,3,4,5);
      //传入一个参数,指定数组的长度
      var numbers = new Array(10);
      

可以调用Array.isArray(对象)来判断一个对象是否是数组

  1. 读写数组

​ 循环遍历

  1. 由字符串生成数组

    调用字符串对象的split()方法通过分隔符创建数组。

  2. 对数组的整体性操作

    将一个数组赋给另外的数组

    • 浅复制

      (为被赋值的数组增加新的引用新数组依然指向原来的数组)

    • 深复制

      (将原数组中的每一个元素都复制一份到新数组)

      //深复制函数
      function copy(arr1,arr2){
      	for (var i = 0;i < arr1.length;++i){
      		arr2[i] = arr1[i];
      	}
      }
      
3.存取函数
  1. 查找元素

    • indexOf()

      查找传进来的参数在目标数组里是否存在:

      如果包含该参数,返回数组中的索引;

      如果不包含,返回-1。

      (多个与参数相同的元素,返回第一个索引)

    • lastIndexOf()

      返回相同元素中最后一个的索引,

      如无相同元素,返回-1。

  2. 数组的字符串表示

    • join()

      可传入分隔字符串的符号。

    • toString()

      两种方法均可将数组转化为逗号分隔的字符串

      当直接对一个数组使用print()函数时,系统自动调用toString方法。

  3. 由已有数组创建新数组

    • concat()

      合并多个数组,创建一个新数组。

      发起者 数组,参数 数组(被连接到发起者的后面)。

    • splice()

      截取一个数组的子集创建一个新数组。

      第一个参数:截取的起始索引;

      第二个参数:截取的长度。

      (可为一个数组增加或移出元素,改变原数组)

4.可变函数
  1. 为数组添加元素

    • push()

      将一个元素添加到数组末尾

      (也可使用数组的length属性为数组添加元素)

      var nums = [1,2,3,4,5];
      nums.push(6);
      nums[nums.length] = 7;
      
    • unshift()

      将(一个或多个)元素添加在数组的开头。

      var nums = [2,3,4,5];
      var newnum = 1;
      nums.unshift(newnum);//1,2,3,4,5
      nums = [3,4,5];
      nums.unshift(1,2);//1,2,3,4,5
      
  2. 从数组中删除元素

    • pop()

      删除数组末尾的元素,

      返回删除元素的值。

    • shift()

      删除数组的第一个元素,

      返回删除元素的值。

      可使用变量保存删除的元素。

  3. 从数组中间位置添加和删除或替换元素

    • splice

      参数:

      • 起始索引(开始添加元素的地方)
      • 需要删除的元素个数(添加元素时该参数设为0)
      • 想要添加进数组的元素(数组/任意的元素序列)
  4. 为数组排序

    • reverse

      将数组中元素的顺序进行翻转

    • sort

      • 字符串类型,对数组进行排序(按照字典顺序)

      • 数字类型

        传入比较函数(例:简单的相减操作)

    function compare(num1,num2){
    	return num1-num2;
    }
    var nums = [3,1,2,100,4,200];
    nums,sort(compare);
    print(nums);//1,2,3,4,100,200
    
  5. 迭代器方法

    1. 不生成新数组的迭代器方法
    • forEach()

      参数:一个函数,对于数组中的每个元素进行操作。

    • every()

      测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。

    • some()

      测试是否至少有一个元素可以通过被提供的函数方法。该方法返回一个Boolean类型的值。

    • reduce()

      对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。

      • 累加法,元素求和
      • 将数组中的元素连接成一个长的字符串
    • reduceRight()

      接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。

      与reduce()方法的区别是,该方法从右至左执行。

    1. 生成新数组的迭代器方法
    • map()

      对每个元素执行操作,返回新数组。

    • filter()

      创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

  6. 二维和多维数组

    1. 创建二维数组

    2. 处理二维数组的元素

      • 按列访问

      外层循环对应行,内层循环对应列。

      • 按行访问

      外层循环对应列,内层循环对应行。

    3. 参差不齐的数组

    数组中每行元素个数彼此不同,通过length计算。

  7. 对象数组

  8. 对象中的数组