关于 js 2个数组取差集怎么取
2016-07-22 14:06
645 查看
关于js2个数组取差集怎么取?
例如求vararr1=[1];vararr2=[1,2];的差集 方法一:
Array.prototype.diff=function(a){ returnthis.filter(function(i){returna.indexOf(i)<0;}); }; [1,2].diff([1]);//[2]
方法二:
varisNaN=Number.isNaN; vardifference=function(arr1,arr2){ returnarr1.reduce(function(previous,i){ varfound=arr2.findIndex(function(j){ returnj===i||(isNaN(i)&&isNaN(j)); }); return(found<0&&previous.push(i),previous); },[]); }; vararr1=[1]; vararr2=[1,2]; console.log(difference(arr2,arr1));//[2]
方法三:
//ES6的Set来处理,这是真正按照数学上的集合来进行的,不会有重复元素 varsubSet=function(arr1,arr2){ varset1=newSet(arr1); varset2=newSet(arr2); varsubset=[]; for(letitemofset1){ if(!set2.has(item)){ subset.push(item); } } returnsubset; }; //普通方法 varsubSet=function(arr1,arr2){ varlen=arr1.length; vararr=[]; while(len--){ if(arr2.indexOf(arr1[len])<0){ arr.push(arr1[len]); } } returnarr; };
方法四:
//数组求差值 vararr1=[1,2,4,9,0]; vararr2=[2,4,7,8]; vardifference=function(arr1,arr2){ vardiff=[]; vartmp=arr2; arr1.forEach(function(val1,i){ if(arr2.indexOf(val1)<0){ diff.push(val1); }else{ tmp.splice(tmp.indexOf(val1),1); } }); console.log(diff.concat(tmp)); } //输出[1,9,0,7,8] difference(arr1,arr2);
相关文章推荐
- js动态创建按钮 (未测试)
- js嵌套使用 双引号和单引号
- js和el表达式操作list
- javascript放在head和body之间的区别
- Web开发之-JSP学习总结-第四篇:自定义标签总结
- javaScript中的函数声明提升---函数声明与函数表达式
- js虚拟数字小键盘(未测试)
- JavaScript计算指定日期与当前日期的相差天数(未测试)
- js防刷新的倒计时代码(未测试)
- js合并单元格(未测试)
- javascript笔记——密码组合规则
- 使用JavaScript写的一个旋转的彩圈(未测试)
- JavaScript多选框的全选与取消(未测试)
- JavaScript本地对象 内置对象 宿主对象
- JavaScript实现图片轮播(未测试)
- js正则表达式:验证邮箱格式、密码复杂度、手机号码、QQ号码(未测试)
- js 获取某个月份的天数(未测试)
- JavaScript去除数组中重复字符串(未测试)
- javascript实现求和
- JS中创建类的方法