美文网首页
JS中的常用操作

JS中的常用操作

作者: 微志异 | 来源:发表于2021-09-26 17:58 被阅读0次

    一、数组去重

    常规数组去重一般为双重遍历和使用indexOf方法

    1.使用双层for循环去重

    const unique = (arr) => {
        for (let i = 0; i < arr.length; i++) {
            for (let j = i + 1; j < arr.length; j++) {
                if (arr[i] === arr[j]) {
                    arr.splice(j, 1);
                    j--;
                }
            }
        }
        return arr;
    };
    

    2.使用indexOf方法去重

    const unique = (arr) => {
        if (!Array.isArray(arr)) return;
      
        let newArray = [];
        for (let i = 0; i < arr.length; i++) {
            if (newArray.indexOf(arr[i]) === -1) {
                newArray.push(arr[i]);
            }
        }
        return newArray;
    };
    

    3.使用Array.from 和 set

    const unique = (arr) => {
        if (!Array.isArray(arr)) return;
        return Array.from(new Set(arr));
    };
    

    4.数组转对象

    // 利用for in 循环
    const obj = {};
    const arr = ['a', 'b', 'c'];
    for (let key in arr) {
        obj[key] = arr[key];
    }
    console.log(obj); // { 0: 'a', 1: 'b', 2: 'c' }
    
    // 使用扩展运算符
    const arr =  ['a', 'b', 'c'];
    const obj = {...arr};
    console.log(obj); // { 0: 'a', 1: 'b', 2: 'c' }
    

    5.性能追踪

    // 测试一段js代码的执行耗时,可以使用performance
    const start = performance.now();
    let sum = 0;
    for (let i = 0; i < 1000000; i++) {
        sum += 1;
    }
    const end = performance.now();
    console.log(start);
    console.log(end);
    

    6.数组扁平化

    // for循环 递归方式
    const arr = [1, [2, [3, 4]]];
    const flatten = arr => {
        let result = [];
        for (let i = 0; i < arr.length; i++) {
            if (Array.isArray(arr[i])) {
                result = result.concat(flatten(arr[i]));
            } else {
                result.push(arr[i]);
            }
        }
        return result;
    };
    console.log(flatten(arr)); // [1, 2, 3, 4]
    
    // reduce 方法
    const arr = [1, [2, [3, 4]]];
    const flatten = arr => {
        return arr.reduce((prev, next) => {
            return prev.concat(Array.isArray(next) ? flatten(next) : next);
        }, []);
    };
    console.log(flatten(arr)); // [1, 2, 3, 4]
    

    7.获取数组的最后一项

    const arr = [1, 2, 3];
    // 通过数组length属性
    const last = arr[arr.length - 1];
    // 通过slice方法
    const last2 = arr.slice(-1)[0];
    // 通过at方法
    const last3 = arr.at(-1);
    
    console.log(last); // 3
    

    8.拷贝数组

    const arr = [1, 2, 3];
    // slice方法拷贝
    const arr2 = arr.slice();
    // 展开操作符拷贝
    const arr3 = [...arr];
    // Array构造函数拷贝
    const arr4 = new Array(...arr);
    // 数组concat方法
    const arr5 = arr.concat();
    
    console.log(arr2); // [1, 2, 3]
    

    9.避免多条件并列

    // 多条件判断-不友好
    if (status === '1' || status === '2' || status === '3') {}
    
    // 使用switch case语句优化
    switch (status){
        case '1':
        case '2':
        case '3':
            // todo
            break;
    }
    
    // 使用includes优化
    const enum = ['1', '2', '3'];
    if (enum.includes(status) {}
    

    相关文章

      网友评论

          本文标题:JS中的常用操作

          本文链接:https://www.haomeiwen.com/subject/siodgltx.html