数组方法

489 阅读6分钟

数组方法整理

创建Array对象
    var arr = [];
    new Array();
    new Array(size);
    new Array(element0,element1,...,elementn);
    
    //没有使用参数时,返回的数组为空,length字段为0
    //参数size是期望的数组元素个数,返回的数组,length字段将被设为size的值。
    //element0,..,是参数列表,传给构造函数Array()时,新创建的数组的初始化为这些值,length字段会被设置为参数的个数
数组转换为字符串(toString())
    //将数组转换为数组值(逗号分割)的字符串
    var color = ["red","blue","pink"]
    console.log(color.toString());   //red,blue.pink
数组所有元素结合为一个字符串(join())
    //和toString()类似,不过可以自己规定分割符
     var color = ["red","blue","pink"]
     console.log(color.join("-"));   //red-blue-pink
     
     //分割符可以是*、&、%,但是都要加引号""
数组末尾添加元素或删除元素(push()和pop())
    //push()方法在数组末尾添加一个新的元素,并返回修改后的长度
    var arr = [1,2]
    console.log(arr.push(3));   //3,(返回数组长度)
    console.log(arr);   //[1,2,3]
    arr.push("red","pink");   //字符串要加引号
    console.log(arr);   //[1,2,3,"red","pink"]
    arr.push(2+2,2+3)   //还能进行简单运算
    console.log(arr);   // //[1,2,3,"red","pink",4,5]
    
    //pop()方法从数组中删除最后一个元素,并返回被删除的值,一次只能删除一个
    console.log(arr.pop());   //5
    console.log(arr.pop());   //4
    console.log(arr);   //[1,2,3,"red","pink"]
数组开头添加元素或删除元素 (shift()和unshift())
    //unshift()方法将参数添加到数组开头,并返回修改后数组的长度
     var arr = [1,2]
    console.log(arr.unshift(0));   //3,(返回数组长度)
    console.log(arr);   //[0,1,2]
    //...和上面push()方法差不多
    
    //shift()删除数组第一项,并返回删除元素的值,如果数组为空则返回undefined
     var arr = [1,2]
    console.log(arr.shift());   //2,(返回数组长度)
    console.log(arr);   //[1,2]
更改元素
  1. 通过索引来更改元素
    //索引号以0开始,[0]是第一个数组元素,[1]是第二个数组,[2]是第三个数组...
    var color = ["red","black","blue"]
    color[0]="orange"
    console.log(color);   //["orange","black","blue"]
  1. 通过length添加元素
   //length表示数组长度,而索引号一直比length小1
    var color = ["red","black","blue"]
    color[color.length]="orange"
    console.log(color);   //["red","black","blue","orange"]
拼接数组(splice())
    //splice()方法
    //第一个参数(2)定义了应该添加新元素的位置,索引位置,就是开始位置,包括当前索引的值
    //第二个参数(0)定义应该删除多少个元素
    //其余参数("skyblue","orange")定义要添加的元素,可以是多个
    var color = ["red","black","blue"]
    color.splice(2,0,"skyblue","orange")
    console.log(color);   //["red","black","skyblue","orange","blue"]
    
    //splice()方法还可以用来删除元素
    var color = ["red","black","blue"]
    color.splice(1,2);
    console.log(color);   //["red"]
合并数组(concat())
    //concat()方法不会更改原数组,它总是返回一个新数组
    //可以使用任意数量的数组作为参数,用逗号分割
    var arr1 = [1,2,3];
    var arr2 = [4,5,6];
    var arr3 = [7,8,9];
    var myArr = arr1.concat(arr2,arr3);
    console.log(myArr);   //[1,2,3,4,5,6,7,8,9]
裁剪数组(slice())
    //slice()方法创建新数组,它不会从源数组中删除任何元素
    //slice()方法接收两个参数,比如(1,3)
    //截取片段从索引号1开始,直到结束参数(不包括结束参数这个数据)为止
    //如果参数出现负值,用负值加上数组长度的值
    var color = ["red","black","blue"]
    var cut = color.slice(1,3);
    console.log(cut);   //["black","blue"]
    
    slice()不接收可以直接copy整个数组,且不会改变原数组
    var color = ["red","black","blue"]
    var cut1 = color.slice();
    console.log(cut1);  //["red", "black", "blue"]
数组替换(fill())
    array.fill(value,start,end);
    //value  必要,填充的值
    //start  可选,开始填充的位置(索引号的值开始)
    //end    可选,停止填充的位置(默认为array.length)
    
    var color = ["red","blue","black","skyblue","green"]
    color.fill("pink",2,5);   
    console.log(color);       //["red","blue","pink","pink","pink"]

数组排序(sort())

    //sort()方法以字母顺序对数组进行排序
    var arr = ["a","d","b","c","e"]
    console.log(arr.sort());   //["a","b","c","d","e"]
反转数组(reverse())
    reverse()方法反转数组中的元素,可以使用它以降序对数组进行排序
    var arr = ["a","b","c"]
    arr.reverse();   //["c","b","a"]

数字排序 (sort())

    var arr = [1,66,28,99,100]
    arr.sort(function(a,b){return a-b});   //[1,28,66,99,100]
    //sort会把两个数据传入,如果结果为负数就换位
Math方法
    使用Math.max.apply来查找数组中的最高值
    var var arr = [3,56,22,100]
    Math.max.apply(null,arr);   //100
    
    //使用Math.min.apply查找数组中的最低值
    var var arr = [3,56,22,100]
    Math.min.apply(null,arr);   //3

JavaScript数组迭代方式

forEach()方法

为每个数组元素调用一次函数(回调函数)

    //forEach的回调函数接收3个参数,不会返回值
    //第一个参数是数组当前元素 (必需) item
    //第二个参数是当前元素的索引号      index
    //第三个参数当前元素所属的数组对象   array
    var arr = [123]
    arr.forEach(item =>{
        item*2
    })
    console.log(arr)   //[1,2,3]
    不会改变原数组,只会遍历给每一个元素执行回调函数
map()方法

map()方法通过对每个数组元素执行函数来创建新数组

    //map()方法和forEach()方法参数一样,但map()返回每次函数调用的结果组成的数组
    var arr = [1,2,3]
    arr.map(function(item,index,array){
      return item*2
    });   //返回的结果是[2,4,6]
    //也可以写成箭头函数,当回调函数只使用item参数是,其他参数可以省略不写
    arr.map(item => item*2);   //[2,4,6]
filter()方法

filter()方法创建一个包含通过测试的数组元素的新数组

    参数和前面forEach()方法参数一样,但filter()方法返回满足条件的的元素创建一个新数组
    var numbers = [5,16,20,25,50]
    numbers.filter(function(item){retrun item>18});
    //[20,25,50]返回大于18的元素组成的新数组
reduce()方法
    语法:arr.reduce(callback,[initialValue])
    // callback (执行数组中每个值的函数,包含四个参数)

// 1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
// 2、currentValue (数组中当前被处理的元素)
// 3、index (当前元素在数组中的索引)
// 4、array (调用 reduce 的数组)

// initialValue (作为第一次调用 callback 的第一个参数。)

    var arr = [10,20,20,30,30,55]
    arr.reduce((pre,cur) =>{
       if(!pre.includes(cur)){
         pre.push(cur);
       }
       return pre;
    },[]);   //[10,20,30,55],初始值为空数组,可以去重
every()方法

every()方法判断数组中的每一项都是否满足条件,只有所有项都满足条件,才会返回true

    var arr = [1,2,3,4,5];
    var arr2 = arr.every(function(x){return x<10});
    console.log(arr2);   //true
    var arr3 = arr.every(function(x){return x<3});
    console.log(arr3);   //false
some()方法

some()方法判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true

    var arr = [1,2,3,4,5];
    var arr2 = arr.some(function(x){return x<3});
    console.log(arr2);   //true
    var arr3 = arr.some(function(x){return x<1});
    console.log(arr3);   //false
indexOf()方法

indexOf()方法在数组中搜索元素值并返回其位置(索引号)

    //indexOf()接受两个参数
    //item,必需,要检测搜索的项目
    //start,可选,从哪里开始搜索,负值从结尾开始,并搜索到结尾
    如果没找到项目,返回-1;如果多次出现,返回第一次出现的索引
    var arr = [1,2,3]
    console.log(arr.indexOf(3));   //2,索引位置
    console.log(arr.indexOf(10));   //-1,查找不到
lastindexOf()方法

Array.lastIndexOf()与Array.indexOf()类似,但是从数组结尾开始搜索

find()方法

find()方法返回通过测试函数第一个数组元素的值

    var arr = [3,2,6,20,19,69]
    var first = arr.find(function(item){return item>10});
    console.log(first);   //20
findIndex()方法

findIndex()方法返回第一个元素的索引号

    var arr = [3,2,6,20,19,69]
    var first = arr.findIndex(function(item){return item>10});
    console.log(first);   //3