数组 indexOf()
众所周知,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()的更多相关文章
- 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 ...
- IE8不支持数组的indexOf方法 如何解决
转自:http://www.jbxue.com/article/8367.html 原因分析: 这是一个js bug, 在IE8下,js数组没有indexOf方法,会报错:而在其它浏览器下(Firef ...
- javascript数据结构-数组
github博客地址 简介 数组是最简单的数据结构,javascript语言也很早就原声支持了数组Array数据类型,和其他语言略微不同的是:js中的数组可以存储不同类型的值,看起来很厉害的样子,但是 ...
- javascript 学习总结(二)Array数组
1.数组常用方法 var colors = ["red", "blue", "green"]; //creates an array wit ...
- JS操作数组常用的方法
JS操作Array对象的方法 concat(arr1,arr2,...):连接数组indexOf(value):返回数组中value的第一个索引join(separator):将数组中所有的元素连接由 ...
- ES6(三)数组的扩展
1.Array.form ES6中,Array.from = function(items,mapfn,thisArg) { } Array.from 用于将 类数组 和 可遍历对象(实现了It ...
- JavaScript语法基础:数组的常用方法详解
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 数组的定义 之前学习的数据类型,只能存储一个值(字符串为一个值).如果我 ...
- 从零开始学 Web 之 JavaScript(四)数组
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...
- ECMAscript5 新增数组内函数
indexOf() 格式:数组.indexOf(item, start) 功能:从start这个下标开始,查找item在数组中的第一次出现的下标. 参数:item 我们要去查找的元素 start从哪个 ...
随机推荐
- Angular + asp.net core 入门
一.简介 通俗的理解,Angular 只是一个前端框架,它只负责前端的事,但一个完整的项目还应该有后端,这其中之一可选的技术就是 asp.net core .这里简单学习一下两个框架之间的协同开发. ...
- .NET6: 开发基于WPF的摩登三维工业软件 (8) - MVVM
基于WPF开发界面的一个很大优势是可以方便地基于MVVM设计模式开发应用.本文从应用的角度基于MVVM实现参数化管材的创建界面. 1 MVVM MVVM是Model-View-ViewModel的简写 ...
- 网络标准之:IANA定义的传输编码
目录 简介 IANA的传输编码方式 7bit 8bit binary quoted-printable base64 总结 简介 不同的系统或者协议可以接受的数据类型是不同的,如果要在那些不支持现有数 ...
- 微信网页JSDK接口-wx.chooseImage问题
wx.chooseImage({count: 1, // 默认9sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有sourceTy ...
- Java基础——抽象类
一.概述: 在Java中,一个没有方法体的方法应定义为抽象方法在public 修饰符后加 abstract修饰符,而类中如果有抽象方法,该类必须定义为抽象类在public 修饰符后加 abstract ...
- 开源三轴云台EVVGC(simple BGC)分析
一. 主程序分析 主程序结构清晰,流程如图所示,下面将对每个部分做详细分析 二. 系统初始化 系统初始化部分的流程如上图所示,下面对每部分做具体分析 1. 时钟初始化 该部分主要是使能DWT,用DWT ...
- NO Oracle database,JUST USE Oracle client。远程导入导出dmp
序言: 你会发现,exp.exe 和imp.exe均存在于Oracle数据库的安装bin目录下.而很多情况下,我们不想安装庞大的Oracle数据库,但想使用imp和exp等工具命令,在我们本地机对Or ...
- 一个Spring的应用看起来象什么?
一个定义了一些功能的接口. 这实现包括属性,它的Setter , getter 方法和函数等. Spring AOP. Spring 的XML 配置文件. 使用以上功能的客户端程序.
- jQuery--表单的过滤
1.表单过滤器的介绍 :input 所有表单元素(<input>/<select>/<textarea>/<button>) :text 文本框< ...
- Java容器基础概况
一.什么是Java容器 书写程序时,我们常常需要对大量的对象引用进行管理.为了实现有效的归类管理,我们常常将同类的引用放置在同一个数据容器中.Java容器类是java提供的工具包,包含了常用的数据结构 ...