记录 Array的一些常用方法

99 阅读4分钟

个人使用的一些数组方法记录,详情请参考MDN文档 Array - JavaScript | MDN (mozilla.org)

改变原数组的方法

//push 向数组的末尾添加一个或多个元素
    let arr =[1,2,3]
    arr.push(4)
    console.log(arr); // [1,2,3,4]
    
// pop 删除数组的最后一个元素
    let arr =[1,2,3]
    arr.pop()
    console.log(arr); // [1,2]

// unshift 向数组的开头添加一个或多个元素
    let arr = [1,2,3]
    arr.unshift(-1,0)
    console.log(arr); // [ -1, 0, 1, 2, 3 ]
    
// shift 删除数组的第一个元素
    let arr =[1,2,3]
    arr.shift()
    console.log(arr); // [2,3]
    
// splice 根据下标删除数组元素,第二个参数代表从下标位置开始删除几个
    let arr = [1, 2, 3, 4, 5];
    
    arr.splice(2, 0, 99); // 在索引2的位置插入元素99
    console.log(arr); // 输出: [1, 2, 99, 3, 4, 5]

    arr.splice(2, 1); // 从索引2的位置删除一个元素
    console.log(arr); // 输出: [1, 2, 3, 4, 5]

    arr.splice(2, 2, 66, 77); // 从索引2的位置删除两个元素,并插入元素66和77
    console.log(arr); // 输出: [1, 2, 66, 77, 5]
// replace 查找匹配的字符串然后用指定的字符串替换它
    var text = "cat,bat,sat,fat"; 
    var result = text.replace("at","ond");//"cond,bat,sat,fat"
    
// reverse 颠倒数组
   let arr=[{a:1},{a:2},{a:3}];
   arr.reverse() // [{ a: 3 }, { a: 2 }, { a: 1 }]
   
// sort 对数组元素进行排序
   let arr=[1,2,3,4,5];
   arr.sort((a,b)=>a-b); //顺序,升序(从小到大) [1,2,3,4,5]
   arr.sort((a,b)=>b-a); //逆序(从大到小) [5,4,3,2,1]

不改变原数组的方法

// join 数组转字符串,不影响原数组,需要新参数接收
// split 字符串转数组
    let arr =[1,2,3,4,5]
    let str=arr.join("-") // '1-2-3-4-5'
    let newArr = str.split("-") //// ['1', '2', '3', '4', '5']
   
// slice 根据下标区间截取数组,左闭右开
    let arr = [1, 2, 3, 4, 5];
    let arr1=arr.slice(1,4) // [ 2, 3, 4 ]
    let arr2=arr.slice(-4,-1) // [ 2, 3, 4 ]
    let arr3=arr.slice(0,-1) // [ 1, 2, 3, 4 ] 

// indexOf 从左到右查看数组是否存在这个元素,有就返回它的第一个下标,没有就返回-1 (lastIndexOf  从右到左)
    let arr =[1,2,3]
    let num=arr.indexOf(2) // 1
    let num1=arr.indexOf(4) //-1

// find 返回数组中第一个通过回调条件的元素 
// findIndex 返回数组中第一个通过回调条件的元素下标
    let arr =[{a:1},{a:2},{a:3}];
    arr.indexOf({a:1}) //-1
    arr.findIndex(item => item.a > 1) // 1
    arr.find(item => item.a > 1) // { a: 2 }
    
// includes 判断数组是否存在指定元素,有就返回true,否则返回false
    let arr = ['a', 'b', 'c', 'd', 'e'] 
    console.log(arr.includes('a')); // true 
    console.log(arr.includes('f')); // false
    
// some 查看数组中是否至少有一项元素满足回调的条件,有则返回true,否则返回false
// every 查看数组中全部项元素是否满足回调的条件,有则返回true,否则返回false
    let arr =[1,2,3,4,5]
    let newArr =arr.some((item,index,arr)=>{
       return item>3
    }) //true
    let newArr =arr.every((item,index,arr)=>{
       return item>3
    } //false

// filter 过滤出符合条件的元素,不会影响原数组,需要新数组接收
    let arr =[{a:1},{a:2},{a:3}]
    let newArr =arr.filter((item,index,arr)=>{
      return  item.a>1
    }) //[{a:2},{a:3}]
    
// forEach 遍历数组
    let arr = [1, 2, 3, 4, 5];
    let newArr arr.forEach((element) => {
      console.log(element); // 1,2,3,4,5
    });

// map 通过对每个元素调用指定函数来创建一个新数组
    let arr = [
      { a: 1, b: 2 },
      { a: 3, b: 4 },
    ];

    arr.map((item) => {
      return item.a = "a";
    });
    console.log(arr); //[ { a: 'a', b: 2 }, { a: 'a', b: 4 } ]

    let newArr = arr.map((item) => {
        return { ...item, c: 5 };
    }); //[{a:1,b:2,c:5},{a:3,b:4,c:5}]
    
// reduce 用于对数组中的元素进行累积操作,将数组缩减为一个值。它通过提供的回调函数来实现累积操作,并返回最终结果
    arr.reduce((acc,cur,i,arr)=>{},initialValue)
-   acc 第一项的值或者上一次叠加的结果值,或者是提供的初始值(initialValue)
-   cur 数组中当前被处理的元素
-   i 当前元素在数组中的索引
-   arr 数组本身

// 累加
    let arr = [{a:1},{a:2},{a:3}]
    let sum =arr.reduce((acc,cur,i,arr)=>{
        return acc+cur.a
    },0) // 6
    console.log(sum)

// 计算数组中每个元素出现的次数
    const arr = ["name", "age", "long", "short", "long", "name", "name"];
    let sum = arr.reduce((pre, cur) => {
      pre[cur] = pre[cur] + 1 || 1;
      return pre;
    }, {}); //{ name: 3, age: 1, long: 2, short: 1 }

    let sumArr = [];
    for (let i in sum) {
      let obg = {
        name: i,
        value: sum[i],
      };
      sumArr.push(obg)
    } 
    console.log(sumArr); // [({ name: "name", value: 3 },{ name: "age", value: 1 },{ name: "long", value: 2 },{ name: "short", value: 1 })];

// 数组去重
    const arr = ['name', 'age', 'long', 'short', 'long', 'name', 'name'];
    let arrResult = arr.reduce((pre, cur) => {
        if (!pre.includes(cur)) {
            pre.push(cur)
        }
        return pre;
    }, [])
    console.log(arrResult);// ["name", "age", "long", "short"]