众所周知,indexOf()这个方法经常出现在字符串的使用中,也许是用来寻找字符串中某一字符在字符串中的位置,或者也可以用来寻找字符串中重复出现的字符有哪些。对于刚接触 JS 的我们来说,在对数组的操作中常用的是向数组添加元素(push()和unshift())、从数组中删除元素(pop()和shift()),对于不常用的  indexOf()方法,我们则是一脸懵逼,但是这个方法却有很强大的作用,下面直接来个demo:

  清除数组中重复出现的元素:

  var    arr1 = [ 1,3,3,4,4 , 4,"aba","aba" ];   //数组字面量的形式创建数组。

  var    arr2 = [ ];

  for ( var i=0; i<arr1.length; i++){

    if(arr2.indexOf(arr1[i])<0){          // 在数组arr2中匹配是否有arr[i]这个元素存在,有就返回这个元素在数组中的下表位置,没有匹配返回-1

      arr2.push(arr1[i]);

    }

  }

  console.log(arr2);    在控制台(f12 热键打开开发者工具)输出的结果是

  1 , 3 , 4 , "aba"

  

  怎么计算数组中元素重复出现的次数?这就运用到了对象概念的理解:

   var    arr1 = [ 1,3,3,4,4,4,"aba","aba" ];
    var    obj = {};
    for( var  i=0 ;i< arr1.length; i++){
      if( !obj[arr1[i]] ){                      //访问对象属性的方式
        obj[arr1[i]] = 1;               //设置对象属性
      }
      else{
        obj[arr1[i]]++;         
      }
    }
      for (key in obj){
        console.log(key+":"+obj[key]);    
       }

  依据数组清除重复元素的原理,我们也能写出查找字符串中重复出现的字母有哪些:

  var   str = "abareevadrgr";

  var  str2 = "";                    // 存放重复的元素

  var   arr1 =str.split("");     //将字符串转换成数组。

  var   arr2 =  [ ];

  for (var i =0 ; i<arr1.length ; i++){

    if( arr2.indexOf(arr1[i])<0){

      arr2.push(arr[i]);                   //  起到一个中转战的作用,以此来排除重复元素。

    }

    else{

        if(str2.indexOf(arr1[i])<0){       //这个字母在字符串 str 中可能出现多次,所以要再判断,避免将重复的元素全部输出。

          str2+=arr1[i];

        }

      }

  }

  console.log(str2);  在控制台输出的结果是   aer

如有不足之处,欢迎交流。

  

数组 indexOf()的更多相关文章

  1. JavaScript中数组中的方法:push()、pop()、shift()、unshift()、slice()、splice()、reverse()、join()、split()、concat()、indexOf()、forEach()、map()、

      1.创建数组的几种方法 //a).通过new来创建数组,new可以省略 var arr=new Array(); var arr=Array(); //b). .通过new来创建数组,并且赋值 v ...

  2. IE8不支持数组的indexOf方法 如何解决

    转自:http://www.jbxue.com/article/8367.html 原因分析: 这是一个js bug, 在IE8下,js数组没有indexOf方法,会报错:而在其它浏览器下(Firef ...

  3. javascript数据结构-数组

    github博客地址 简介 数组是最简单的数据结构,javascript语言也很早就原声支持了数组Array数据类型,和其他语言略微不同的是:js中的数组可以存储不同类型的值,看起来很厉害的样子,但是 ...

  4. javascript 学习总结(二)Array数组

    1.数组常用方法 var colors = ["red", "blue", "green"]; //creates an array wit ...

  5. JS操作数组常用的方法

    JS操作Array对象的方法 concat(arr1,arr2,...):连接数组indexOf(value):返回数组中value的第一个索引join(separator):将数组中所有的元素连接由 ...

  6. ES6(三)数组的扩展

    1.Array.form ES6中,Array.from = function(items,mapfn,thisArg) {  }   Array.from 用于将 类数组 和 可遍历对象(实现了It ...

  7. JavaScript语法基础:数组的常用方法详解

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 数组的定义 之前学习的数据类型,只能存储一个值(字符串为一个值).如果我 ...

  8. 从零开始学 Web 之 JavaScript(四)数组

    大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...

  9. ECMAscript5 新增数组内函数

    indexOf() 格式:数组.indexOf(item, start) 功能:从start这个下标开始,查找item在数组中的第一次出现的下标. 参数:item 我们要去查找的元素 start从哪个 ...

随机推荐

  1. MySQL 8.0.13(Windows压缩版本)下载安装教程

    MySQL下载安装教程 1.首先在百度上搜索mysql 2.点击链接进去,找到对应的路径 3.进去之后,可以看到版本是8.0.13,以及最下面有个Download按钮,点击下载 4.之后会跳转到开始下 ...

  2. 实践2:如何使用word2vec和k-means聚类寻找相似的城市

    理解业务 一个需求:把相似的目的地整理出来,然后可以通过这些相似目的地做相关推荐,或者是相关目的地的推荐 准备数据 Word2Vec算法:可以学习输入的文本,并输出一个词向量模型 对数据进行清洗,去出 ...

  3. 34 异常机制 异常体系结构 Java把异常当做对象来处理 并定义一个基类java.lang.Throwable作为所有异常的超类 Error Exception

    异常体系结构 概念 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类. 在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Erro ...

  4. 记一次解决关机蓝屏 | MULTIPLE_IRP_COMPLETE_REQUESTS | klflt.sys

    已经解决蓝屏问题,原因是卡巴斯基安全软件驱动导致,需要卸载卡巴斯基安全软件,详细过程如下. 一.关机时蓝屏 Win10系统,在关机动画快结束时突然蓝屏,提示:你的设备遇到问题,需要重启,终止代码:MU ...

  5. 空顺序表的实现(基于c语言)

    书中对于创建一个空线性表的定义如下: struct SeqList{ int MAXNUM; // 顺序表中最大元素的个数(也就是最多多少个元素),(其实MAXNUM也可以定义在外面) int n; ...

  6. 【工程应用五】 opencv中linemod模板匹配算法诸多疑惑和自我解读。

    研究这个前前后后也有快两三个月了,因为之前也一直在弄模板匹配方面的东西,所以偶尔还是有不少朋友咨询或者问你有没有研究过linemod这个算法啊,那个效率啥的还不错啊,有段时间一直不以为然,觉得我现在用 ...

  7. 线程 Threading

    import time from threading import Thread def func(): while True: time.sleep(0.5) print(123) def func ...

  8. [SPDK/NVMe存储技术分析]011 - 内核态ib_post_send()源码剖析

    OFA定义了一组标准的Verbs,并在用户态提供了一个标准库libibverbs.例如将一个工作请求(WR)放置到发送队列的Verb API是ibv_post_send(), 但是在Linux内核,对 ...

  9. 程序语言与编程实践7-> Java实操4 | 第三周作业及思路讲解 | 异常处理考察

    第三周作业,可能是异常那一章当时没怎么听,此前也不怎么接触,感觉还挺陌生的. 00 第1题 00-1 题目 /* * To change this license header, choose Lic ...

  10. java并发lock锁详解和使用

    一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性.那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被syn ...