说起数组去重大家都不陌生,去重也有好多种方法,这里介绍很好理解的两种。

第一种

首先说一下第一种的逻辑,就是先拿第一个去跟第二个比,再跟第三个比,再跟第四个比……只要发现有相等的,可以用splice()方法去掉,这一圈比完了,再拿第二个去跟第三个比,再跟第四个比……就这么一直比下去,直到都判断完毕,那么一看就是要两个循环,看代码。

var arr = [1,2,1,3,4,5,5];
console.log(arr); //1,2,1,3,4,5,5 for(var i=0; i<arr.length; i++){
for(var j=i+1; j<arr.length; j++){
if(arr[i] == arr[j]){
arr.splice(j,1);
}
}
}
console.log(arr); //1,2,3,4,5

顺便介绍一下splice()的用法:

(1)删除功能

arr.splice(a, b):从a(索引)开始截取b个元素,直接在原数组中去掉,上面去重就用到了这个功能。

var box = ['apple','orange','banana'];
var box2 = box.splice(0,2);
console.log(box2); //"apple", "orange"
console.log(box); //"banana"

(2)插入功能

arr.splice(a, b, c):第二个参数b为0,那么只添加不截取,即从a处添加c元素。

var box = ['apple','orange','banana'];
var box2 = box.splice(1,0,'mango');
console.log(box2); //在索引1处插入一个元素
console.log(box); //"apple", "mango", "orange", "banana"

(3)替换功能

arr.splice(a, b, c):b不为0,从a处截取b个元素(直接去掉),并把截取的元素替换成c。

var box = ['apple','orange','banana'];
var box2 = box.splice(1,1,'mango');
console.log(box2); //"orange"
console.log(box); //"apple", "mango", "banana"

是不是对这个方法有深的了解了呢

第二种

第二种是通过 indexOf() 方法来实现这个效果,利用它差找不到的项返回 -1 这一特性,创建一个空数组,一项项循环即可。

var arr = [1,2,1,3,4,5,5];
var s = [];
for(var i=0; i<arr.length; i++){
if(s.indexOf(arr[i]) == -1){
s.push(arr[i]);
}
}
console.log(s); //1,2,3,4,5

说到indexOf(),此时我又想到一个例子,作为补充,关于查找某个字符出现的位置,原理一样。

var str = "you ying yi shang";
var strbox = [];
var res = str.indexOf('y');
while(res > -1){
strbox.push(res);
res = str.indexOf('y', res+1);
}
console.log(strbox); //0,4,9

创建一个空数组strbox来存放搜索到的字符的位置,定义一个变量先获取第一个搜索到的y的位置,如果大于 -1 ,将索引位置添加到strbox中,然后在此位置+1后继续往后搜索,如果res的值仍大于-1,说明还有y存在,继续存放,继续搜索,直到等于 -1,可输出查看。

数组去重+indexOf()应用的更多相关文章

  1. Javascript中的数组去重-indexof方法

    在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1 ...

  2. js递归和数组去重(简单便捷的用法)

    1.递归例子<script type="text/javascript"> function test(num) { if(num < 0) { return; ...

  3. indexOf()--数组去重

    @(JavaScript) 数组去重方法有多中,这里列举出自己认为比较容易理解的方法. 思路: 创建一个新的空数组,用来存放去重后的新数组. 利用for循环循环遍历需要去重的数组. 利用indexOf ...

  4. indexOf() 使用方法(数组去重)

    对于indexOf()的用法一直停留在查找第几个字符串,却不知道它能用到数组去重中,首先还是温顾下indexOf()的语法: <!DOCTYPE html> <html lang=& ...

  5. 数组的indexOf方法--数组去重

    数组的indexOf方法 数组方法大家再熟悉不过了,却忽略了数组有 indexOf 这个方法(我个人感觉). 干说不练瞎扯淡,遇到了什么问题,注意⚠️点又在哪里? let arr = ['orange ...

  6. JavaScript常见的五种数组去重的方式

    ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...

  7. js数组去重

    这就是数组去重了...var str=['hello','node','element','node','hello','blue','red'];var str1=[]; function firs ...

  8. &&&&数组去重方法总结&&&&&

    [数组去重]本文一共总结了5种方法: //方法一:sort方法 var ary = [1, 4, 2, 3, 1, 2, 2, 3, 3, 2, 5, 2, 1, 2];Array.prototype ...

  9. 关于数组去重的几种方法-------javascript描述

    第一种方法:借助json对象来实现,若json对象中无该属性则添加,否则不添加,最后返回json对象的属性,时间复杂度为O(n) function deleteArrayRepeat(arr) { v ...

随机推荐

  1. ch1-vuejs基础入门(hw v-bind v-if v-for v-on v-model 应用组件简介 小案例)

    1 hello world 引入vue.min.js 代码: ----2.0+版本 <div id="test"> {{str}} </div> <s ...

  2. Python 获取当前脚本文件路径目录

    # -*- coding: cp936 -*- import sys,os # 获取脚本文件的当前路径 def cur_file_dir(): # 获取脚本路径 path = sys.path[0] ...

  3. JAVA提高二:枚举

    JDK5.0中有一个非常有用的特性:枚举,这个特性以前在C语言中出现过,后来JDK出现后,开始觉得没有必要,但随着使用JAVA语言的人数增多,发现大家对枚举的需求非常大,于是又加入了此特性,下面我们来 ...

  4. 学习笔记之08试用div做网页(滨院)-小作业

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. kubeernetes节点资源限制

    实际应用中发现,部分节点性能不足,某些较大的服务如果跑在这些机器上.会很快消耗该机器的内存和cpu资源,如果用uptime看一下的就会发现负载特别高(合理的范围这个值应该等于cpu个数),高到一定值就 ...

  6. 一份传世典文:十年编程(Teach Yourself Programming in Ten Years)

    原文:Teach Yourself Programming in Ten Years作者:郭晓刚翻译:郭晓刚(foosleeper@163.net)最后修订日期:2004-3-192005-01-12 ...

  7. win10 输入法禁用IME

    发现了win10 没法输入,因为禁用IME 右击开始 计算机管理  任务计划程序 打开到Microsoft/Windows/TextServicesFramework  选择操作运行  选择如果任务失 ...

  8. 剖析Prometheus的内部存储机制

    Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(引用官方PPT). 接下来让我们看看他 ...

  9. Linux入门(6)——Ubuntu16.04安装atom

    打开终端,依次输入: sudo add-apt-repository ppa:webupd8team/atom sudo apt-get update sudo apt-get install ato ...

  10. ThreadPoolExecutor系列<二、ThreadPoolExecutor 代码流程图>

    本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7681648.html 1.ThreadPoolExecutor代码 ...