文档章节

对差等分

万城
 万城
发布于 2017/08/29 10:36
字数 857
阅读 2
收藏 0
点赞 0
评论 0
function duichadengfen2(args) {
    var arr = [];
for (var i = 0; i < arguments.length; i++) {
    arr.push(arguments[i]); //用数组组成新的数组
    arr[i] = arr[i].filter((function(item,index,array){
        return array.indexOf(item) == index;        //去重,判断索引值是否等于indexOf返回的首次出现的位置,如果不等于就是出现了两次,这样只会返回一个
    }))
}
//下面这个result没用,只是演示用的
var result = arr.filter(function(item,index,array){
        return array.indexOf(item) == index;        //去重,判断索引值是否等于indexOf返回的首次出现的位置,如果不等于就是出现了两次,这样只会返回一个
    });
    /*arr.forEach(function (i) { //删去每个数组项重复的部分
        for (var j = 0; j < i.length - 1; j++) {        //用相邻排序法,这个是第一位k是第二位,所以这个是length-1
            for (var k = j + 1; k < i.length; k++)
                if (i[j] == i[k]) {     //如果相邻两位相等
                    i.splice(j, 1);     //如果相等则删除当前这个元素
                    j--; //重新定位J的位置
                }
        }
    });*/
    arr.reduce(function (prev, cur, index, array) { //归并数组,并且删去后项中相同的项。第一个参数是合并后的数组第二个是当前数组
        prev.forEach(function (m) {         //如果prev里的某个值没在cur里出现,则把这个值push到cur里去
            if (cur.indexOf(m) == -1)
                cur.push(m);
            else cur.splice(cur.indexOf(m), 1);     //如果prev里的某个值在cur里出现过,则删除这个值
        });
        return cur;     //所有的值都存在了cur里,返回就可以了,
    });
    return arr[arr.length - 1];     //reduce会迭代到最后一个数组,所以最后一个数组才是结果
}
duichadengfen2([3, 3, 3, 2, 5], [2, 1, 5, 7], [3, 4, 6, 6], [1, 2, 3]);

/*

function sym(args) {
  var args1 = arguments[0],
      args2 = arguments[1],
      result = [];
  for (var u=0; u<args1.length; u++){
    if(args2.indexOf(args1[u]) === -1){
      result.push(args1[u]);
    }
  }
  for (var i=0; i<args2.length; i++){
    if(args1.indexOf(args2[i]) === -1){
      result.push(args2[i]);
    }
  }
  return result;
}

sym([1, 2, 3], [5, 2, 1, 4]);*/
        function sym(args) {
            var arr = [];
            for (var i = 0; i < arguments.length; i++) {
                arr.push(arguments[i]); //用数组组成新的数组
            }
            arr.forEach(function (i) { //删去每个数组项重复的部分
                for (var j = 0; j < i.length - 1; j++) {
                    for (var k = j + 1; k < i.length; k++)
                        if (i[j] == i[k]) {
                            i.splice(j, 1);
                            j--; //重新定位J的位置
                        }
                }

                // console.log(arr);
            });
          /*去重更好的方法
          return temp.filter(function(item,index,array){
             return array.indexOf(item) == index;
             });//自身查重只需要让它本身第一次出现在原数组的位置为索引值index,就可以保留且只保留一个。*/
            // return arr;
            arr.reduce(function (prev, cur, index, array) { //归并数组,并且删去后项中相同的项。
                prev.forEach(function (m) {
                    if (cur.indexOf(m) == -1)
                        cur.push(m);
                    else cur.splice(cur.indexOf(m), 1);
                });
                return cur;
            });

            return arr[arr.length - 1];
        }

        sym([3, 3, 3, 2, 5], [2, 1, 5, 7], [3, 4, 6, 6], [1, 2, 3]);

function sym(args) {
  var arrs=[];
  for(var a of arguments){    //es6
    arrs.push(a);
  }
  var res=arrs.reduce(function(a,b){  
    a=del(a);
    b=del(b);  //数组分别处理
    var arr=a.concat(b);   
    return del(arr,true);  //拼接成一个大数组后,再进行一次处理
  });
  
 return res;
}
 
function del(arr,flag){   //排序and去重   flag为true表示删干净,否则留一个
  var start,end;    
  arr.sort(function(a,b){  //数组由小到大排序
    return a-b;
  });
  for(var i=0;i<arr.length;i++){
    if(arr[i]==arr[i+1]){  //发现重复
      start=(start===undefined)?i:start;  //start为重复的起始位置
      end=i+1;           //end为重复的结束位置
    }else{   
      if( end && end==i ){  //如果存在重复,即end有值,按照flag对数组进行处理。
        if( flag ){
          arr.splice(start,end-start+1);
          i=i-(end-start+1);
        }else{
          arr.splice(start,end-start);
          i=i-(end-start);
        }
        start=undefined;  //没有重复了,start要还原
      }      
    }
  }
  
  return arr;
  
}
sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]);

 

 

 

© 著作权归作者所有

共有 人打赏支持
万城
粉丝 0
博文 50
码字总数 99152
作品 0
青岛
前端工程师
Go 的多元线性回归--regression

regression 是Go 的多元线性回归。 用法举例: 导入安装包,创建一个回归和数据,并添加进去。你可按照你的需要添加变量,下面实例中我们使用三个变量: package mainimport ( "fmt" "github...

匿名
2016/09/18
117
0
iOS 事件记录框架--EventLogger

EventLogger 是 iOS 开发中事件记录框架,方便进行事件统计,包括计数事件与计时事件,如:统计某按钮的点击次数,两个事件发生的时间差等,使用简单。 计数事件: [[EventLogger sharedInst...

YourtionGuo
2015/11/02
188
0
本文带你快速全面了解蓝牙Mesh技术基础与应用

全新的Mesh技术可以支持设备多对多传输,并允许所有兼容该标准的设备在一定距离范围内同时互相对话,还提高了构建大范围网络覆盖的通信效能。那关于蓝牙Mesh网络技术基础与应用本文将进行介绍...

昇润科技
01/02
0
0
小蛇学python(11)初窥numpy

今天我们来学学numpy这个库。重要性自不必说,直接切入主题。 numpy的数组创建方法 其中shape属性表现了这个数组的维度。 numpy还有一些自带的数组创建方法 读者可以自行输入,观看结果,享受...

Data_God
05/26
0
0
寿命计算器测试结果

根据你的个人资料、生活习惯、营养状况、身体状况、家族史,经过科学测试,计算出你的寿命约是: 106岁 你可以将结果 测试结果仅供参考,这个测只是告诉你要从现在开始改变自己,以下是针对你...

晨曦之光
2012/04/24
48
0
redis之sets类型及操作

sets类型及操作 set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作,操作中key理解为集合的名字。 set的是通过hash table实现(即set并没有顺...

乾坤刀
06/03
0
0
Redis学习笔记~Redis提供的五种数据结构

分布式缓存,消息队列,替代Session呵呵(Session太不稳定了,呵呵)=Redis Redis的崛起绝非偶然,它确实有自己的新东西在里面,它不像Memcached,只能将数据存储在内存中,它提供了持久化机...

mcy247
2017/12/07
0
0
明确规范,轻量级标记语言 Markdown 欲标准化

近日,为了明确规范,避免兼容性差等问题,Markdown 希望制定一个明确的规范,使其标准化。 Markdown 是由 John Gruber 于 2004 年开发一种轻量级标记语言,它允许人们 “使用易读易写的纯文...

oschina
2014/09/06
2.8K
14
安装redis和phpredis模块

安装redis shell> wget http://redis.googlecode.com/files/redis-2.0.4.tar.gz shell> tar zxvf redis-2.0.4.tar.gz shell> mv redis-2.0.4 redis shell> cd redis shell> make shell> redi......

老牛
2011/03/14
0
0
Elasticsearch分析聚合

Elasticsearch不仅仅适合做全文检索,分析聚合功能也很好用。下面通过实例来学习。 一、准备数据 准备5条数据,保存着books.json中,批量导入: 二、Group By分组统计 执行命令: 统计结果: ...

napoay
2016/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring boot中swagger2使用

1.pom.xml中添加 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version>......

说回答
5分钟前
0
0
tomcat虚拟路径的几种配置方法

tomcat虚拟路径的几种配置方法 一般我们都是直接引用webapps下面的web项目,如果我们要部署一个在其它地方的WEB项目,这就要在TOMCAT中设置虚拟路径了,Tomcat的加载web顺序是先加载 $Tomcat_ho...

Helios51
17分钟前
1
0
Mac 安装jupyter notebook的过程

MAC台式机 python:mac下自带Python 2.7.10 1.先升级了pip安装工具:sudo python -m pip install --upgrade --force pip 2.安装setuptools 工具:sudo pip install setuptools==33.1.1 3.安装......

火力全開
22分钟前
0
0
导航守卫解释与例子

“导航”表示路由正在发生改变。 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的。 记住...

tianyawhl
22分钟前
0
0
Java日志框架-logback配置文件多环境日志配置(开发、测试、生产)(原始解决方法)

说明:这种方式应该算是最通用的,原理是通过判断标签实现。 <!-- if-then form --> <if condition="some conditional expression"> <then> ... </then> </if> ......

浮躁的码农
37分钟前
1
0
FTP传输时的两种登录方式和区别

登录方式 匿名登录 用户名为: anonymous。 密码为:任何合法 email 地址。 授权登录 用户名为:用户在远程系统中的用户帐号。 密码为:用户在远程系统中的用户密码。 区别 匿名登录 只能访问...

寰宇01
38分钟前
0
0
plsql developer 配置监听(不安装oracle客户端)

plsql developer 配置监听(不安装oracle客户端)

微小宝
45分钟前
1
0
数据库(分库分表)中间件对比

本人的宗旨就是,能copy的,绝对不手写。 分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm。 根据一定的规则把数据文件(MYD)和索...

奔跑吧代码
49分钟前
2
0
Netty与Reactor模式详解

在学习Reactor模式之前,我们需要对“I/O的四种模型”以及“什么是I/O多路复用”进行简单的介绍,因为Reactor是一个使用了同步非阻塞的I/O多路复用机制的模式。 I/O的四种模型 I/0 操作 主要...

hutaishi
55分钟前
1
0
【2018.07.16学习笔记】【linux高级知识 20.16-20.19】

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

lgsxp
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部