数组去重+indexOf()应用

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

第一种

首先说一下第一种的逻辑,就是先拿第一个去跟第二个比,再跟第三个比,再跟第四个比……只要发现有相等的,可以用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,可输出查看。

时间: 2024-10-10 02:15:51

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

Javascript中的数组去重-indexof方法

在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. 1 var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1]; 2 var arr2 = []; 3 for(var i = 0;i < arr.length;i++){ 4 if(arr2.indexOf(arr[i]) == -1){ 5 arr2.push(arr[i]) 6 } 7 } 8 console.log(arr2) //[1,2,3,

indexof实现数组去重的方法,有三个版本,一个Js版本,2个augular版本

先上Js的简化版本的数组去重,需要M层控制数据 大妈 1 var aa = [1,3,4,5,6,23,523,6,123,'1',12,'刘','刘','刘','翔',12,123,214,'1','3','刘翔','刘翔']; 2 3 function arr(arr){ 4 var result = []; 5 for (var i=0;i<arr.length;i++) { 6 if (result.indexOf(arr[i]) == -1) { 7 result.push(arr[i

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

对于indexOf()的用法一直停留在查找第几个字符串,却不知道它能用到数组去重中,首先还是温顾下indexOf()的语法: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <!-- 1.indexOf() 方法对大小写敏感! 2.如果要检索的字符串值没有出现,则该

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

数组的indexOf方法 数组方法大家再熟悉不过了,却忽略了数组有 indexOf 这个方法(我个人感觉). 干说不练瞎扯淡,遇到了什么问题,注意??点又在哪里? let arr = ['orange', '2016', '2016']; arr.indexOf('orange'); //0 arr.indexOf('o'); //-1 arr.indexOf('2016'); //1 arr.indexOf(2016); //-1 这里没把例子拆的那么细,四个用例足以说明问题. arr.ind

javaScript数组去重方法

在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断新数组b中是否有原数组a中的元素,如果没有的话则在b数组的后面追加上a[i],如果有的话就不执行任何操作,最后可以达到数组去重的操作. 这种方法应该是平时开发中最常用的JS数组去重的方法了,简单又实用. demo2: 第二种去重的方法比较巧妙,是定义一个空对象和一个空数组,在遍历原数组的时候来用原数

JavaScript 数组去重

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

数组去重的方法总结

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>数组去重的 3种方法</title> </head> <body> <script type="text/javascript"> var demoAr = [3,4,5,5,7,2,1,4,3]; /

整理数组去重与数组排序等方法

实用且比较简单的数组排序与数组去重的方法,也较好理解: 1.数组冒泡排序: var arr=["a",3,5,2,1,4,2,3,3,3,5,5,5,4]; function sort(arr){ //让数组中的元素俩俩进行比较,实现替换: for (var i = 0; i< arr.length; i++) { for (var j = 0; j < arr.length; j++) { if (arr[j] > arr[j + 1]) { var temp =

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