各种视角了解数组Array以及案例展示

数组

数组方法千千万,不管多少,请先记住下面加粗字体部分(没有原因,死记):

字符串、对象的互转:     JSON字符串转换为对象:   JSON.parse(str)                     json对象转换为JSON字符串:  JSON.stringify(arr)
数组、字符串互转:    数组转字符串:join()                          字符串通过特定的符号切割组成数组:split()

好了,原因是我把上面的方法老记混,所以单独提出来,下来,请看正题数组

 

一、数组的定义和特点

  1. 数组是用来存储一组相同数据类型的数据的数据结构。 
  2. 数组变量属于引用数据类型。
  3. 数组中的元素可以是任何数据类型(基本类型和引用类型)。

二、数组的语法 

  1. var arr = new Array();
  2. var arr = [];

三、数组的复制

  1、深复制和浅复制    

    假设B复制了A,修改A的时候,看B是否发生变化:
    如果B跟着也变了,说明是浅拷贝,拿人手短!(修改堆内存中的同一个值)
    如果B没有改变,说明是深拷贝,自食其力!(修改堆内存中的不同的值)

  2、直接用赋值表达式赋值的复制过程为浅复制

  3、实现深复制的方法:for循环挨个赋值,es6数组扩展运算符,利用数组方法concat

四、数组的操作

  1、查找元素

    indexOf(); 用来查找元素在数组中是否存在;存在则返回索引,不存在则返回-1
    lastIndexOf(); 返回相同元素中最后一个元素的索引

  2、数组转化为字符串

    join(); toString();

  3、数组的合并

    concat(): 

      concat() 方法用于连接两个或多个数组。
      该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
      arrayObject.concat(arrayX,arrayX,......,arrayX)
    splice():

      向/从数组中添加/删除项目,然后返回被删除的项目
      该方法会改变原始数组。
      splice(position,numberOfItemsToRemove,item)
      splice(索引位置,要删除元素的数量,要添加的元素)
      前两个参数必需,第三个为不必需

    slice():

      可从已有的数组中返回选定的元素。
      该方法不会改变原始数组。
      arrayObject.slice(start,end)
      返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素
      请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。 

五、可变函数

  1、为数组添加元素

    push(); 方法可向数组的末尾添加一个或多个元素,并返回新的长度。arrayObject.push(newelement1[,newelement2],....[,newelementX])
    unshift();数组前插入 也是返回新的长度
    splice();数组中间添加元素
    也可以使用length属性为数组添加元素,var num = [1,2,3] num[num.length] = 4,但push()方法看起来更直观

  2、从数组中删除元素

    pop();删除数组末尾的元素,并并返回数组的最后一个元素
    shift();删除数组的第一个元素,并返回第一个元素的值。
    splice();删除数组中间的元素
    splice(起始索引,[[需要删除额元素个数(添加元素时该参数设为0)],要添加的数组元素])

  3、为数组排序

    reverse()方法可以将数组中的元素进行翻转
    sort()方法可以对数组进行排序,但是依据的字符串排序,如果要排列的元素是数字,sort()方法的排序结果就不能让人满意了。但是可以在sort方法中传递一个对比函数!

六、迭代器方法

  迭代器方法可以对数组中的每个元素对应执行一个函数

  1、不生成新数组的迭代器方法

    forEach() 方法对数组的每个元素执行一次提供的函数。arr.forEach(callback[, thisArg]);
    every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值
    some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。
    reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值
    reduceRight()

  2、生成新数组的迭代器方法

    map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
    filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

 

案例:

  

 

 

  

    

    

  

   上述代码运行结果:

      

posted @ 2019-11-08 15:03  再见小猴子  阅读(179)  评论(0编辑  收藏  举报