zoukankan      html  css  js  c++  java
  • 数组去重和两个数组求交集

    引言

           今天在项目中一个功能要用到两个数组求交集的算法。 大概是这样: 两个表格分别用easyui datagrid实现,要把A表格的一列数据和B表格的一列数据取出来,然后去重,去重后求交集。 那么在计算出的交集中分别根据求出的数据选中两个表格的对应行。 故用到js数组去重和求交集。

    交集

    Array.prototype.intersect = function(b) {
      var flip = {};
      var res = [];
      for(var i=0; i< b.length; i++) flip[b[i]] = i;
      for(i=0; i<this.length; i++)
        if(flip[this[i]] != undefined) res.push(this[i]);
      return res;
    }
    

    去重

    Array.prototype.Remove=function{ // 去重
        var r = [];
        for(var i = 0; i < this.length; i ++) {
            var flag = true;
            var temp = this[i];
            for(var j = 0; j < r.length; j ++) {
                if(temp === r[j]) {
                    flag = false;
                    break;
                }
            }
            if(flag) {
                r.push(temp);
            }
        }
        return r;
    }
    

    总结

          1、在使用的过程中去重和求交集几乎没什么大问题,另外一个细节问题就是我在提取datagrid的某列数据时,循环提取时,因为列内容是汉字,在循环时又必须给每列的数据加上单引号构成类似这种结构:['小明','小红','小李'] 。不知道有没有别的方法可以直接把某列数据(数据源是JSON对象)处理成数组。

          2、类似数组的去重和交集也是前端或者js面试的经典题目,我以前面试前端就遇到类似的问题。这里求交集只列了一种算法,在查找解决方法时至少发现4-5种写法,有时间都对比使用一下,再做个记录。

  • 相关阅读:
    在平面中,一个点绕任意点旋转θ度后的点的坐标
    消息队列
    通过注册表修改默认打开方式
    Beagleboneblack的MLO文件干了些啥
    input子系统 KeyPad-Touch上报数据格式与机制
    字符编码
    find命令之exec
    Jmeter(一)-Linux上的安装和使用
    for循环删除linkedlist中的元素。。。。。。
    Java中组装String字符串常用的几种防范
  • 原文地址:https://www.cnblogs.com/sword-successful/p/4111706.html
Copyright © 2011-2022 走看看