手写数组去重

//本来以为挺简单,还是天真,考虑,NaN,{}.

1:arr.splice(i+1,1);//表示插入删除元素,表示删除i+1个元素,1表示删除一个

//手写数组去重

                         var arr = [1,2,3,3];

//排序的数组 arr.sort();//排序好了就不写了

                         for(var i=0;i<arr.length-1;i++)

                         {

                                  if(arr[i]==arr[i+1])

                                  {

                                          arr.splice(i+1,1);

                                          i--;

                                  }

                         }

                         console.log(arr);

2:ES6去重

去重的原理:

Set()结构本身的特性:Set容器 : 无序不可重复的多个value的集合体

Array.from(v) : 将伪数组对象或可遍历对象转换为真数组

function unique (arr) {
  return Array.from(new Set(arr))
}
var arr = [1,1,‘true‘,‘true‘,true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,‘NaN‘, 0, 0, ‘a‘, ‘a‘,{},{}];
console.log(unique(arr))
 //[1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {}, {}]6方法去重

3:ES5去重

function unique(arr){
        for(var i=0; i<arr.length; i++){
            for(var j=i+1; j<arr.length; j++){
                if(arr[i]==arr[j]){         //第一个等同于第二个,splice方法删除第二个
                    arr.splice(j,1);
                    j--;
                }
            }
        }
return arr;
}
var arr = [1,1,‘true‘,‘true‘,true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,‘NaN‘, 0, 0, ‘a‘, ‘a‘,{},{}];
    console.log(unique(arr))
//[1, "true", 15, false, undefined, NaN, NaN, "NaN", "a", {…}, {…}]     //NaN和{}没有去重,两个null直接消失了

4:更多参考

https://segmentfault.com/a/1190000016418021

原文地址:https://www.cnblogs.com/love-life-insist/p/9945690.html

时间: 2024-08-02 08:09:39

手写数组去重的相关文章

js手写数组Api--模拟实现常见数组Api

数组的API经常用,但是api的内部实现还没研究过,于是就研究学习了下. 原文地址: https://www.cnblogs.com/yalong/p/11606865.html 数组的API的具体使用方看这里 API详细用法本文记录了数组中的 every,filter, find , indexOf, forEach, from, includes, isArray, map, reduce,slice,splice, sort这些个API的实现,如有不当,欢迎指出. Every 定义和用法:

&lt;数据结构系列1&gt;封装自己的数组——手写动态泛型数组

哈哈,距离上一次写博客已经快过去半个月了,这这这,好像有点慢啊,话不多说,开始我们的手写动态泛型数组 首先是我们自己写一个自己的动态数组类,代码如下所示: public class Array<E> { //成员变量:数据,大小 private E[] data; private int size; //构造函数,传入数组的容量capacity public Array(int capacity) { data=(E[])new Object[capacity]; size=0; } //无参

前端常见手写笔试题

1.获取数组中最大值 var arr=[1,2,3,4,3,2,1]; function getMax(arr){ for(var i=0,max=arr[0]; i<arr.length; arr[i]>max&&(max=arr[i]),i++); return max;//返回max } console.log(getMax(arr));//42.数组去重方法一: var arr=["a","b","a",&qu

logistic回归与手写识别例子的实现

本文主要介绍logistic回归相关知识点和一个手写识别的例子实现 一.logistic回归介绍: logistic回归算法很简单,这里简单介绍一下: 1.和线性回归做一个简单的对比 下图就是一个简单的线性回归实例,简单一点就是一个线性方程表示 (就是用来描述自变量和因变量已经偏差的方程) 2.logistic回归 可以看到下图,很难找到一条线性方程能将他们很好的分开.这里也需要用到logistic回归来处理了. logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,

【学】数组去重的3种方式

数组去重的3种方式 var arr = [1,4,2,3,4,5,6,7,3,4,5,23,2,3,4,5,3,2,3,4,5];   function findInArray(n,arr){ for (var i=0; i<arr.length; i++) { if(arr[i]==n){ return true; } } return false; }   function removeRep1(arr){ //方法2 var arr1 = []; for (var i=0; i<arr.

JavaScript 数组去重

JavaScript 数组去重 Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对话,你会学到很多.为什么是 underscore?最主要的原因是 underscore 简短精悍(约 1.5k 行),封装了 100 多个有用的方法,耦合度低,非常适合逐个方法阅读,适合楼主这样的 JavaScript

JavaScript数组去重(转载)

转载自https://zhuanlan.zhihu.com/p/24753549 作者:TooBug 定义重复(相等) NaN 初看NaN时,很容易把它当成和null.undefined一样的独立数据类型.但其实,它是数字类型. console.log(typeof NaN); //number 根据规范,比较运算中只要有一个值为NaN,则比较结果为false,所以会有下面这些看起来略蛋疼的结论: // 全都是false 0 < NaN; 0 > NaN; 0 == NaN; 0 === Na

简单的神经网络算法-手写数字识别

本文通过BP神经网络实现一个简单的手写识别系统. 一.基础知识 1环境 python2.7 需要numpy等库 可利用sudo apt-get install python-安装 2神经网络原理 http://www.hankcs.com/ml/back-propagation-neural-network.html 讲的特别清楚,本实验过程中涉及矩阵运算都用numpy库的函数 3.js的基础知识 http://www.w3school.com.cn/tags/html_ref_canvas.a

使用JavaScript进行数组去重——一种高效的算法

最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑. 数组去重的算法有很多种,以下是一种. 思路如下: 定义一个空的对象obj: 循环数组arr,判断obj[arr[i]]是否为false,如果是则将该数组元素放到result中,并且将obj[arr[i]]置为true: obj[arr[0]]肯定为false,因为obj为空,arr[0]将被放到result中,并且obj[arr[0]]被置为true: 循环的过