数组 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从哪个 ...
随机推荐
- VS Code调试C代码
1.前言 首先说明的是vscode是代码编辑器,并不是编译器,它本身并不能编译C语言. 在这里我们使用的是MinGW-w64作为C语言的编译器.MinGW-w64的前身是MinGW的全称是:Minim ...
- think php 富框架文本编辑器
商品的详细描述一般都是图文混合.对于图文混合的内容,需要使用富文本编辑器来实现. Ueditor富文本编辑器的下载地址: http://ueditor.baidu.com/website/downlo ...
- 同事都说有SQL注入风险,我非说没有
前言 现在的项目,在操作数据库的时候,我都喜欢用ORM框架,其中EF是一直以来用的比较多的:EF 的封装的确让小伙伴一心注重业务逻辑就行了,不用过多的关注操作数据库的具体细节.但是在某些场景会选择执行 ...
- Cocoapods插件机制浅析
原文链接 背景 虽然做iOS开发的过程中使用过 Cocoapods, 但是对里面的细节了解其实不算太多,直到这两年做织女项目时,通过对Cocoapods进行Qt支持改造才开始深入了解部分细节,这个过程 ...
- asp.net MVC 事务
使用事务的目的是什么? 保证事务范围内的代码,要么全部执行,要么全不执行,也就是出错回滚. 写在数据库脚本里很好理解,但是用在应用程序层面,没有看到catcha error rallback的代码,心 ...
- python轻松入门——爬取豆瓣Top250时出现403报错
关于爬虫程序的418+403报错. 1.按F12打开"开发者调试页面"如下图所示:按步骤,选中Network,找到使用的接口,获取到浏览器访问的信息. 我们需要把自己的python ...
- springboot通过maven下载依赖失败解决
公司直接用不了内网遇到的好的坑.导入网上的springboot项目的启动入口一致有报错,如:Cannot resolve symbol 'SpringApplication' maven配置设置都做了 ...
- length()与trim()函数用法
student表 SELECT * from `student` where length(sex) = 0 SELECT length(ID) from `student` WHERE provin ...
- 数据库中间件ShardingSphere-Proxy(一)
1.现实中的问题 我们知道数据库的数据,基本80%的业务是查询,20%的业务涵盖了增删改,经过长期的业务变更和积累数据库的数据到达了一定的数量之后,直接影响的是用户与系统的交互,查询时的速度,插入数据 ...
- 数据结构 - 单链表 C++ 实现
单链表 单链表的定义 typedef int ElemType; typedef struct LNode { ElemType data; LNode *next; } LNode, *LinkLi ...