首页 > 其他分享 >js 集合的交集、补集、差集、去重

js 集合的交集、补集、差集、去重

时间:2022-10-12 15:06:05浏览次数:45  
标签:obj ++ 补集 差集 js length str var Array

///集合取交集 
Array.intersect = function () {
var result = new Array();
var obj = {};
for (var i = 0; i < arguments.length; i++) {
for (var j = 0; j < arguments[i].length; j++) {
var str = arguments[i][j];
if (!obj[str]) {
obj[str] = 1;
}
else {
obj[str]++;
if (obj[str] == arguments.length)
{
result.push(str);
}
}
}
}
return result;
}

//集合去掉重复
Array.prototype.uniquelize = function () {
var tmp = {},
ret = [];
for (var i = 0, j = this.length; i < j; i++) {
if (!tmp[this[i]]) {
tmp[this[i]] = 1;
ret.push(this[i]);
}
}

return ret;
}
//并集
Array.union = function () {
var arr = new Array();
var obj = {};
for (var i = 0; i < arguments.length; i++) {
for (var j = 0; j < arguments[i].length; j++)
{
var str=arguments[i][j];
if (!obj[str])
{
obj[str] = 1;
arr.push(str);
}
}//end for j
}//end for i
return arr;
}

//2个集合的差集 在arr不存在
Array.prototype.minus = function (arr) {
var result = new Array();
var obj = {};
for (var i = 0; i < arr.length; i++) {
obj[arr[i]] = 1;
}
for (var j = 0; j < this.length; j++) {
if (!obj[this[j]])
{
obj[this[j]] = 1;
result.push(this[j]);
}
}
return result;
};

console.log(Array.intersect(["1", "2", "3"], ["2", "3", "4", "5", "6"]));//[2,3]
console.log([1, 2, 3, 2, 3, 4, 5, 6].uniquelize());//[1,2,3,4,5,6]
console.log(Array.union(["1", "2", "3"], ["2", "3", "4", "5", "6"], ["5", "6", "7", "8", "9"]))
console.log(["2", "3", "4", "5", "6"].minus(["1", "2", "3"]));

标签:obj,++,补集,差集,js,length,str,var,Array
From: https://blog.51cto.com/u_15826214/5750754

相关文章

  • package.json
    package.json是什么?npm是前端开发人员广泛使用的包管理工具,项目中通过package.json来管理项目中所依赖的npm包的配置。package.json就是一个json文件,除了能够描述项目的包......
  • js div的显示与隐藏
    <divtitle="当前活动"id="workItem"href="../TiPLM/Process/FrmWork.aspx?type=WorkItem"></div><divtitle="未来任务"id="FutureTask"href="../TiPLM/Proces......
  • vue.js 类型转换 强类型转强类型
    1、js常规类型转换https://www.cnblogs.com/123525-m/p/15788443.htmlhttps://blog.csdn.net/allway2/article/details/1249550872、vue强类型转强类型自定义强类型Co......
  • JS 困惑之this的指向
    JS中,this到底指向谁,一直是比较困惑的问题,由于this的指向问题造成bug,在程序中经常出现,如何正确理解this的应用,是写好js代码的关键。案例1:functionthiswindow(){c......
  • JS 获取指定元素滚动条
    获取后台数据接口,当数据无的时候,可以移除滚动监听mounted(){//监听滚动window.addEventListener("scroll",this.getScroll,true);},......
  • 尚硅谷-JavaWeb Day8 Filter、Json、Ajax
    1.Filter过滤器(JavaEE的规范,也是接口)作用:拦截请求、过滤响应;(应用于权限检查、日记操作、事务管理等等)①基本使用(通过判断session域中是否包含用户信......
  • JS操作
    筛选两个数组间相同的数据1.筛选两个数组letinitList=[1,2,35,15,48,68,48,52];letlist=[35,68];console.log(initList.filter((item)=>list.some((va......
  • 前端利用jsencrypt.js进行RSA加密
    前端利用jsencrypt.js进行RSA加密......
  • WebAssembly01--c代码调用js
    编译选项emcctest.c--js-librarypkg.js-otest.jspkg.jsmergeInto(LibraryManager.library,{js_add:function(a,b){console.log("js_add");......
  • 22道js输出顺序问题,你能做出几道
    前言最近在准备面试题,console的输出顺序之前一直迷迷糊糊。必备知识JS是单线程的单线程是JavaScript核心特征之一。这意味着,在JS中所有任务都需要排队执行,前一个任......