JavaScript得到多个数组交集的办法

2019-07-20 作者:网站首页   |   浏览(180)

前几天项目上想用map集合一样的东西,简单拿对象拼了一下子,今天闲的慌实现一下
大家不要见笑

本文实例讲述了JavaScript获取两个数组交集的方法。分享给大家供大家参考。具体如下:

代码

这里传入的数组必须是已经排过序的

var Map = function (){
  /************基础变量**************/
  var hashmap = {};
  var keys = [];
  var vals = [];
  var entrys = [];
  var size = 0;
  var index = {};

  var Entry = function(key,value){
    var entryKey = key;
    var entryValue = value;
    this.getKey = function (){
      return entryKey;
    };
    this.getValue = function(){
      return entryValue;
    };
  };
  /************基本方法 按字母排序**************/
  this.clear = function(key) {
    hashmap[key] = undefined;
    var i = index[key];
    entrys.splice(i,1);
    vals.splice(i,1);
    keys.splice(i,1);
    size --;
  };

  this.entrySet = function() {
    return entrys;
  };

  this.get = function(key){
    return hashmap[key];
  };

  this.isEmpty = function() {
    if(hashmap) return true;
    return false;
  };

  this.keySet = function() {
    return keys;
  };

  this.put = function(key,value){
    if(!this.get(key)){
      entrys.push(new Entry(key,value));
      keys.push(key);
      vals.push(value);
      index[key] = size;
      size   ;
    } else {
      var i = index[key];
      entrys[i] = new Entry(key,value);
      vals[i] = value;
    }
    hashmap[key] = value;
  };

  this.size = function() {
    return size;
  };

  this.values = function() {
    return vals;
  };
};
/************扩展方法**************/
Map.prototype = {
  containsKey : function(key) {
    if(this.get(key)) return true;
    return false;
  },
  putAll : function(set) {
    for(var e in set){
      if(set[e]){
        this.put(e,set[e]);
      }
    }
  },
  remove : function(key) {
    var v = this.get(key);
    this.clear(key);
    return v;
  }
};
var h = new Map();
h.put('a',10);
h.put('b',11);
h.put('c',3);
h.put('d',5);
console.info(h.size());
h.clear('a');
console.info(h.containsKey('a'));
console.info(h.containsKey('b'));
console.info(h.size());

console.log(h.entrySet());
console.log(h.keySet());
console.log(h.values());

for(var i in h.entrySet()){
  var obj = h.entrySet()[i];
  console.log(obj.getKey()   ":"   obj.getValue());
}
/* finds the intersection of 
 * two arrays in a simple fashion. 
 *
 * PARAMS
 * a - first array, must already be sorted
 * b - second array, must already be sorted
 *
 * NOTES
 *
 * Should have O(n) operations, where n is 
 *  n = MIN(a.length(), b.length())
 */
function arrayIntersection(a, b)
{
 var ai=0, bi=0;
 var result = new Array();
 while( ai < a.length && bi < b.length )
 {
   if (a[ai] < b[bi] ){ ai  ; }
   else if (a[ai] > b[bi] ){ bi  ; }
   else /* they're equal */
   {
    result.push(a[ai]);
    ai  ;
    bi  ;
   }
 }
 return result;
}
console.log(arrayIntersection([1,2,3],[2,3,4,5,6]));//[2,3]

以上所述就是本文的全部内容了,希望大家能够喜欢。

yzc216亚洲城,希望本文所述对大家的javascript程序设计有所帮助。

您可能感兴趣的文章:

  • js取两个数组的交集|差集|并集|补集|去重示例代码
  • JavaScript获取两个数组交集的方法
  • JavaScript获取多个数组的交集简单实例
  • JS数组交集、并集、差集的示例代码
  • Javascript实现的Map集合工具类完整实例
  • Backbone.js中的集合详解
  • jsp页面循环集合操作整理
  • js数组去重的三种常用方法总结
  • JS实现数组去重方法总结(六种方法)
  • JS实现的集合去重,交集,并集,差集功能示例

您可能感兴趣的文章:

  • js取两个数组的交集|差集|并集|补集|去重示例代码
  • JavaScript获取多个数组的交集简单实例
  • JS数组交集、并集、差集的示例代码
  • Javascript实现的Map集合工具类完整实例
  • javascript 实现map集合
  • Backbone.js中的集合详解
  • jsp页面循环集合操作整理
  • js数组去重的三种常用方法总结
  • JS实现数组去重方法总结(六种方法)
  • JS实现的集合去重,交集,并集,差集功能示例

本文由yzc216亚洲城发布于网站首页,转载请注明出处:JavaScript得到多个数组交集的办法

关键词: yzc216亚洲城