文档章节

对差等分

万城
 万城
发布于 2017/08/29 10:36
字数 857
阅读 2
收藏 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
青岛
前端工程师
iOS 事件记录框架--EventLogger

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

YourtionGuo
2015/11/02
188
0
Go 的多元线性回归--regression

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

匿名
2016/09/18
117
0
寿命计算器测试结果

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

晨曦之光
2012/04/24
48
0
本文带你快速全面了解蓝牙Mesh技术基础与应用

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

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

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

Data_God
05/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS 7.* 配置网络

配置静态IP 进入配置文件目录 cd /etc/sysconfig/network-scripts 查找以 ifcfg-eno 开头的文件并编辑它 vi ifcfg-ens32 修改文件中的变量值 BOOTPROTO=staticONBOOT=yesIPADDR=192.168...

阿白
31分钟前
0
0
深入理解OAuth2.0协议

1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间。是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题。豪车一般配备两种钥匙:主钥匙和泊...

xtof
35分钟前
1
0
Linux学习-0920

3.4 usermod命令 3.5 用户密码管理 3.6 mkpasswd命令 一、usermode命令 usermode作用是用来修改用户信息。 方法: usermod 参数 username 示例1:修改用户uid usermod -u 1010 test5 示例2...

wxy丶
45分钟前
1
0
synchronized锁对象的坑

今天本来写点其他东西,碰巧写了一下synchronized,没想到掉坑里面了,大佬别笑。 起初代码大概是这样的: package com.ripplechan.part_1_2_3;import java.util.concurrent.CountDownL...

RippleChan
48分钟前
1
0
XAMPP环境搭建(Apache + MariaDB + PHP + Perl)

operation system:ubuntu-18.04.1 step1:download XAMPP #sudo wget https://www.apachefriends.org/xampp-files/7.2.9/xampp-linux-x64-7.2.9-0-installer.run step2:install XAMPP #sudo ......

硅谷课堂
51分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部