js --- 数组常用方法

160 阅读7分钟

数组常用方法

改变原数组

  1. push:
    • 语法:数组名.push(数据)
    • 作用:向数组末尾添加数据
    • 返回值:追加数据后,新数组的长度
        var arr = [1,2,3,4,5];
        console.log(arr.push(6));   //返回新数组长度  6
        console.log(arr);           //新数组         [1, 2, 3, 4, 5, 6]
  1. pop:
    • 语法: 数组名.pop()
    • 作用: 删除数组最后一条数据
    • 返回值: 删除的数据
        var arr = [1,2,3,4,5];
        console.log(arr.pop());   //返回删除的数据      5
        console.log(arr);           //新数组         [1, 2, 3, 4]
  1. unshift:
    • 语法:数组名.unshift(数据)
    • 作用:向数组开头添加数据
    • 返回值:添加数据后,新数组的长度
        var arr = [1,2,3,4,5];
        console.log(arr.unshift(0));   //返回新数组长度     6
        console.log(arr);           //新数组         [0, 1, 2, 3, 4, 5]
  1. shift:
    • 语法: 数组名.shift()
    • 作用: 删除数组第一条数据
    • 返回值: 删除的数据
        var arr = [1,2,3,4,5];
        console.log(arr.shift());     //返回删除的数据
        console.log(arr);             //新数组[2,3,4,5]
  1. reverse:
    • 语法: 数组名.reverse()
    • 作用: 反转数组
    • 返回值: 反转后的数组
        var arr = [1,2,3,4,5];
        console.log(arr.reverse());    //返回反转后的数组
  1. sort:
    • 语法1: 数组名.sort()
    • 作用: 将数组转换成字符串类型后排序
    • 语法2: 数组名.sort(function (a,b) {return a - b})
    • 作用: 将数组的内容按照正序排列
    • 语法2: 数组名.sort(function (a,b) {return b - a})
    • 作用: 将数组的内容按照逆序排列
    • 返回值: 排列后的数组
        var arr = [23,456,75,234,14,121,74,967,4,121]
        // 语法1
        console.log(arr.sort());     //返回排列后的数组-转字符串    [121,14,23,4...]
        // 语法2
        console.log(arr.sort(function (a,b) {return a - b}));   //返回排列后的数组-正序
        // 语法3
        console.log(arr.sort(function (a,b) {return b - a}));   //返回排列后的数组-逆序
  1. splice:
    • 语法1: 数组名.splice(开始索引,多少个)
    • 语法2: 数组名.splice(开始索引,多少个,新数据1,新数据2...)
    • 作用: 截取数组内容
    • 返回值: 以数组类型返回截取的数据
        var arr = [1,2,3,4,5];
        // 语法1
        console.log(arr.splice(1,2));       //返回值为剪切掉的内容(数组类型) [2,3]
        console.log(arr);                   //剪切后的数组      [1,4,5]

        // 语法2
        var res = arr.splice(0,3,'111','222','333');
        console.log(res);           //返回值为剪切掉的内容(数组类型)  [1,2,3]
        console.log(arr);           //剪切后的数组    ['111','222',''333,4,5]

不改变原数组

  1. indexOf:
    • 语法: 数组名.indexOf(要检查的数据); 数组名.indexOf(要检查的数据, 开始索引)
    • 作用: 从前到后检查该数据在数组内出现的索引位置
    • 返回值: 如果数组中找到该数据,则返回相应索引,如果没找到返回 -1
        var arr = [23,456,75,23,234,14,121,74,967,4,121]
        // indexOf
        console.log(indexOf(75,0));     //找到  返回对应下标
        console.log(indexOf(1,0));      //没找到  返回-1
        console.log(indexOf(23,0));     //从下标 0 开始查找  返回0
        console.log(indexOf(23,1));     //从下标 1 开始查找  返回3
  1. lastIndexOf:
    • 语法:数组.lastIndexOf(要查询的数据, 从哪里开始查询(下标)) 第二个参数不写默认为 数组最后一个下标
    • 作用:从后到前检查该数据在数组内出现的索引位置
    • 返回值:如果数组中找到该数据,则返回相应索引,如果没找到返回 -1
        var arr = [1, 2, 3, 4, 5, 4, 3, 2, 1]
        console.log(arr.lastIndexOf(1))         // 不传递第二个参数, 默认从 最后一个元素的下标 开始 8
        console.log(arr.lastIndexOf(1, 3))      // 从 下标 [3] 开始 在数组中查询 数字 1     0
        console.log(arr.lastIndexOf(100, 3))    // 从 下标 [3] 开始 在数组中查询 数字 100   -1
  1. slice:
    • 语法:数组名.slice('开始下标','结束下标')
    • 参数:
      • 包含开始下标不包含结束下标
      • 两个参数都可以省略不写
      • 参数可以支持 负数, 相当于 数组.length + 负数
    • 作用:将选中的数据复制
    • 返回值:以数组形式返回复制的内容
        var arr = [1,2,3,4,5,6,7,8,9,10]
        var res = arr.slice(0,3)
        console.log(res);    //[1, 2, 3]
  1. concat:
    • 语法:数组.concat(数据1, 数据2, 数据3, 数据4.......)
    • 作用:将传入的数据, 合并到指定的数组中, 然后返回出来, 注意: 不会改变原数组!!!
    • 返回值:合并后的数组
        let arr = [1,2,3]

        // 将传入的数据拼接进数组内
        console.log(arr.concat(1,2,3));         // [1, 2, 3, 1, 2, 3]
        console.log(arr.concat([4,5,6]));       // [1, 2, 3, 4, 5, 6]
  1. join:
    • 语法:数组.join('连接符') 连接符如果不传递默认使用,连接
    • 作用:根据传入的连接符 将数组内的所有元素, 拼接成一个完整的字符串
    • 返回值:拼接后的字符串
        let arr = [1,2,3,4,5]

        // 将数组默认以逗号拼接成字符串,可传入参数用于拼接
        console.log(arr.join());        // 1,2,3,4,5
        console.log(arr.join(''));      // 12345
        console.log(arr.join(' '));      // 1 2 3 4 5
        console.log(arr.join('|'));      // 1|2|3|4|5
  1. forEach:
    • 语法:数组.forEach(function (item, index, origin) { 遍历数组后你想要做的事 })
    • 参数
      • item: 数组中每一个元素
      • index: 每一个元素对应的下标
      • origin: 原数组
    • 作用:据数组的元素内容, 循环遍历数组, 拿到数组的每一项
    • 返回值:没有返回值
    • 语义: 遍历数组
        // forEach  遍历数组
        let arr = [1,2,3,4,5]
        arr.forEach(function (item,index,origin) {
            console.log(item,index,origin);
        })
        /*
        1 0 (5) [1, 2, 3, 4, 5]
        2 1 (5) [1, 2, 3, 4, 5]
        3 2 (5) [1, 2, 3, 4, 5]
        4 3 (5) [1, 2, 3, 4, 5]
        5 4 (5) [1, 2, 3, 4, 5]
        */
  1. map:
    • 语法数组。map(function (item,index,origin) {遍历数组后你想要做的事})
    • 参数
      • item: 数组中每一个元素
      • index: 每一个元素对应的下标
      • origin: 原数组
    • 作用:根据原数组映射出来一个新数组
    • 返回值:是一个映射出来的新数组(需要在函数内部书写 return)
    • 语义: 映射数组
        // map   映射数组
        let arr = [1,2,3,4,5]
        let res = arr.map(function (item) {
            return item * 2
        })
        console.log(res);
        // [2, 4, 6, 8, 10]
  1. filter:
    • 语法:数组.filter(function(item,index,origin)(){})
    • 作用:过滤数组
    • 返回值:过滤出得内容形成一个新的数组
        let arr = [1,2,3,4,5,6,7,8,9,10]
        let res1 = arr.filter(function (item) {
            return item % 2 === 0      // [2, 4, 6, 8, 10]
        })
        console.log(res1);
  1. find:
    • 语法:数组.find(function(item,index,origin)(){})
    • 作用:查找数组内得数据
    • 返回值:第一个满足条件得数据
        let arr = [1,2,3,4,5,6,7,8,9,10]
        let res2 = arr.find(function (item) {
            // return item % 2 === 0    // 返回第一个满足得数据
            return item > 50            // undefined
        })
        console.log(res2);
  1. findIndex:
    • 语法:数组.findIndex(function(item,index,origin)(){})
    • 作用:查找数组内得数据
    • 返回值:第一个满足条件得数据的下标
        let arr = [1,2,3,4,5,6,7,8,9,10]
        let res3 = arr.findIndex(function (item) {
            // return item % 2 === 0        // 返回第一个满足得下标
            return item > 50                // 返回-1
        })
        console.log(res3);
  1. every:
    • 语法:数组.every(function(item,index,origin)(){})
    • 作用:判断数组内是否所有元素都满足条件
    • 返回值:如果数组内所有元素都满足条件返回true,否则返回false
        let arr = [1,2,3,4,5,6,7,8,9,10]
        let res4 = arr.every(function (item) {
            // return item > 0         // true
            return item % 2 === 0   // false
        })
        console.log(res4);
  1. some:
    • 语法:数组.some(function(item,index,origin)(){})
    • 作用:判断数组内是否有元素满足条件
    • 返回值:如果数组内有元素满足条件返回true,没有则返回false
        let arr = [1,2,3,4,5,6,7,8,9,10]
        let res5 = arr.some(function (item) {
            // return item % 2 === 0   // true
            return item < 0         // false
        })
        console.log(res5);
  1. reduce:
    • 语法:数组.some(function(prev,item,index,origin)(){},init)
    • 参数:
      • init:随意一个值即可,可传可不传
      • prev:如果init传入参数,第一次遍历prev的值是init传入的值;如果init没有传入参数,第一次遍历prev的值是数组[0]的值; 如果是第一次后续的执行, 那么他的值就是上一次遍历返回的结果
    • 作用:累加器
    • 返回值:累加后的结果
        // 不传入init
        let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        let res = arr.reduce(function (prev, item, index, origin) {
            return prev + item
        })
        console.log(res);        // 55
        
        // 传入init
        let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        let res = arr.reduce(function (prev, item, index, origin) {
            return prev + item
        },'')
        console.log(res);       // 12345678910