关于 js 2个数组取差集怎么取
关于 js 2个数组取差集怎么取?
例如求var arr1 = [1]; var arr2 = [1,2];的差集
方法一:
Array.prototype.diff = function(a) {
return this.filter(function(i) {return a.indexOf(i) < 0;});
};
[1,2].diff([1]);//[2]
方法二:
var isNaN = Number.isNaN;
var difference = function(arr1, arr2) {
return arr1.reduce(function(previous, i) {
var found = arr2.findIndex(function(j) {
return j === i || (isNaN(i) && isNaN(j));
});
return (found < 0 && previous.push(i), previous);
}, []);
}; var arr1 = [1];
var arr2 = [1, 2]; console.log(difference(arr2, arr1)); //[ 2 ]
方法三:
// ES6 的 Set 来处理,这是真正按照数学上的集合来进行的,不会有重复元素
var subSet = function(arr1, arr2) {
var set1 = new Set(arr1);
var set2 = new Set(arr2); var subset = []; for (let item of set1) {
if (!set2.has(item)) {
subset.push(item);
}
} return subset;
};
//普通方法
var subSet = function(arr1, arr2) {
var len = arr1.length;
var arr = []; while (len--) {
if (arr2.indexOf(arr1[len]) < 0) {
arr.push(arr1[len]);
}
} return arr;
};
方法四:
// 数组求差值
var arr1 = [1, 2, 4, 9, 0];
var arr2 = [2, 4, 7, 8]; var difference = function(arr1, arr2) {
var diff = [];
var tmp = 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 2个数组取差集怎么取的更多相关文章
- 多动手试试,其实List类型的变量在页面上取到的值可以直接赋值给一个js的Array数组变量
多动手试试,其实List类型的变量在页面上取到的值可以直接赋值给一个js的Array数组变量,并且数组变量可以直接取到每一个元素var array1 = '<%=yearList =>'; ...
- 从js的repeat方法谈js字符串与数组的扩展方法
js将字符串重复N次的repeat方法的8个版本 /* *@desc: 将一个字符串重复自身N次 */ //版本1:利用空数组的join方法 function repeat(target, n) { ...
- JS Jquery去除数组重复元素
js jquery去除数组中的重复元素 第一种:$.unique() 第二种: for(var i = 0,len = totalArray_line.length;i < len;i++) { ...
- js便利关联数组 及数组定义方式 分类
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv=& ...
- lodash源码分析之数组的差集
外部世界那些破旧与贫困的样子,可以使我内心世界得到平衡. --卡尔维诺<烟云> 本文为读 lodash 源码的第十七篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodas ...
- JS实现的数组全排列输出算法
本文实例讲述了JS实现的数组全排列输出算法.分享给大家供大家参考.具体分析如下: 这段js代码对数组进行全排列输出,改进了一些老的代码 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来, ...
- 为什么js的"关联数组"不能转成json字符串而对象可以?
定义这么一个js的“关联数组”: var arr = new Array(); arr[; arr[; alert(JSON.stringify(arr)); 得到的结果如图: [] 一句话,你的 a ...
- jquery ajax post 传递数组 ,多checkbox 取值
jquery ajax post 传递数组 ,多checkbox 取值 http://w8700569.iteye.com/blog/1954396 使用$.each(function(){});可以 ...
- js中的数组
上网查了一下,js中的数组包含的内容还真不少.先给出两个学习的链接: w3school链接:http://www.w3school.com.cn/js/js_obj_array.asp 博客园链接:h ...
随机推荐
- Android_Menu_PopupMenu
layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...
- js 添加enter事件
$(function () { document.onkeydown = function (e) { var ev = document.all ? window.event : e; ) { if ...
- 世界上最方便的SharePoint移动客户端--Rshare
Rshare我试用了一段时间,同时也测试了其他家产品,使用后的感觉是Rshare无愧于世界上最方面的SharePoint移动客户端. 1.界面设计很方便,设计中充分考虑到移动客户的使用习惯及喜好,设计 ...
- Access数据库在线压缩的实现方法
如果在 Access 数据库中删除数据或对象,或者在 Access 项目中删除对象,Access 数据库或 Access 项目可能会产生碎片并会降低磁盘空间的使用效率.压缩 Access 数据库或Ac ...
- ThreadLocal 设计模式浅谈
部分代码:ThreadLocal中 的get方法, 获得的是当前线程相关的对象 /** * Returns the value in the current thread's copy of this ...
- KKCapture 高清录像软
KKCapture是一款免费的高清录像软件.支持各种游戏录制,桌面录制,播放视频录制,操作非常简单. 软件特点 [1]1. 支持所有游戏录制,包括网络游戏.网页游戏.单机游戏,以及所有3D游戏.2 ...
- linux配置学习笔记(一):如何提高ssh连接的速度
服务器端sshd配置文件 /etc/ssh/sshd_config 看是否有如下的两条配置条目 GSSAPIAuthentication no UseDNS no 如果前面带#,请把#删掉,或者新添加 ...
- JAVA时钟
效果图如下: //简单动态时钟程序,以图形和数字两种方式来显示当前时间 import javax.swing.*; import java.awt.event.*; import java.awt.* ...
- 创建Unity新项目并编译成游戏程序
注:本人所使用的Unity版本为:Unity5.3.5f1,所使用的VS版本为:Visual.Studio.2013.Ultimate 折腾了快一个月了,终于有时间做自己的啦,哈哈: ) 步骤一:启动 ...
- 06_例子讲解:rlPlanDemo
规划器的例子程序: "E:\Program Files (x86)\rl-0.6.2\bin\rlPlanDemo.exe" "E:\Program Files (x86 ...