• JS 算法一


    1 写一个函数,去掉a数组中和b数组中相同的元素。

    思路一:让a数组中的元素和b数组中的元素逐个比较,若相同,则删除。

    方法一:

    function array_diff(a, b){
        for(var i = 0; i < a.length; i++){
            for(var j = 0; j < b.length; j++){
                if(a[i] == b[j]){
                    a.splice(a.indexOf(b[j]), 1); //删除
                    j = -1;  //必须保证a中的每一个元素都从b的第一个元素开始遍历
                }
            }
        }
        return a;
    }
    var a = ["c", "a", "b", "a", "d"];
    var b = ["a", "b"];
    console.log(array_diff(a, b));

    思路二: 让b数组中的元素和a数组中的元素逐个比较,若相同,则删除。

    方法二: 

    function array_diff(a, b) {
        for(var i = 0; i < b.length; i++)
        {
            for(var j = 0; j < a.length; j++)
            {
                if(a[j] == b[i]) {
                    a.splice(j,1);
                    j = j - 1;  //保证a中从删除后的元素开始继续遍历
                }
            }
        }
        return a;
    }

    注意: 这两种方法思路类似,都可以实现要求,需要注意的是必须保证所有的元素都要遍历到,这样才能做正确判断。

    思路三:通过给数组b的元素加一个键(true)来判断。

    方法三:

    function array_diff(a, b) {
        var temp1 = []; //临时数组1
        var temp2 = []; //临时数组2
        
        for (var i = 0; i < b.length; i++) {
            temp1[b[i]] = true; //巧妙地方:把数组B的值当成临时数组1的键并赋值为真
            //console.log(temp1);
        };
    
        for (var i = 0; i < a.length; i++) {
            if (!temp1[a[i]]) {
                temp2.push(a[i]);
                // 巧妙地方:同时把数组A的值当成临时数组1的键并判断是否为真,
                // 如果不为真说明没重复,就合并到一个新数组里,这样就可以得到一个全新并无重复的数组
            } ;
        };
        return temp2;
    }
  • 相关阅读:
    Twitter Storm安装配置(Ubuntu系统)单机版
    Ubuntu下安装配置JDK1.7
    JS性能优化
    JavaScript禁用页面刷新
    pomelo获取客户端IP
    MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)
    MySQL5.6忘记root密码(win平台)
    清空文件下的SVN控制文件
    Windows平台搭建NodeJs开发环境以及HelloWorld展示—图解
    Unity3D默认的快捷键
  • 原文地址:https://www.cnblogs.com/lijy/p/6888353.html
Copyright © 2020-2023  润新知