數組去重和兩個數組求交集


引言

       今天在項目中一個功能要用到兩個數組求交集的算法。 大概是這樣: 兩個表格分別用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種寫法,有時間都對比使用一下,再做個記錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM