数组去重+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,可输出查看。
数组去重+indexOf()应用的更多相关文章
- Javascript中的数组去重-indexof方法
在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1 ...
- js递归和数组去重(简单便捷的用法)
1.递归例子<script type="text/javascript"> function test(num) { if(num < 0) { return; ...
- indexOf()--数组去重
@(JavaScript) 数组去重方法有多中,这里列举出自己认为比较容易理解的方法. 思路: 创建一个新的空数组,用来存放去重后的新数组. 利用for循环循环遍历需要去重的数组. 利用indexOf ...
- indexOf() 使用方法(数组去重)
对于indexOf()的用法一直停留在查找第几个字符串,却不知道它能用到数组去重中,首先还是温顾下indexOf()的语法: <!DOCTYPE html> <html lang=& ...
- 数组的indexOf方法--数组去重
数组的indexOf方法 数组方法大家再熟悉不过了,却忽略了数组有 indexOf 这个方法(我个人感觉). 干说不练瞎扯淡,遇到了什么问题,注意⚠️点又在哪里? let arr = ['orange ...
- JavaScript常见的五种数组去重的方式
▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...
- js数组去重
这就是数组去重了...var str=['hello','node','element','node','hello','blue','red'];var str1=[]; function firs ...
- &&&&数组去重方法总结&&&&&
[数组去重]本文一共总结了5种方法: //方法一:sort方法 var ary = [1, 4, 2, 3, 1, 2, 2, 3, 3, 2, 5, 2, 1, 2];Array.prototype ...
- 关于数组去重的几种方法-------javascript描述
第一种方法:借助json对象来实现,若json对象中无该属性则添加,否则不添加,最后返回json对象的属性,时间复杂度为O(n) function deleteArrayRepeat(arr) { v ...
随机推荐
- C语言学生信息管理系统项目源码
#include //包含printf().scanf().gets().puts().getchar()函数 #include //包含malloc()函数 #include //包含s ...
- DSCP 与IP 优先级IP优先级
在IPv4的报文头中,TOS字段是1字节,如下图所示.根据RFC1122的定义,IP优先级(IPPrecedence)使用最高3比特(第0-2比特).+++++++++++++++++++++++++ ...
- python修改注册表
与注册表操作相关的函数可以分为打开注册表.关闭注册表.读取项值.c添加项值.添加项,以及删除项等几类. 表1 Windows注册表基本项 项名 描述 HKEY_CLASSES_ROOT 是HKEY ...
- doubi -- 初创
doubi -- 初创 [背景分析] 一直在苦苦探寻人生的价值和意义.在这"二八"年华,对IT工作有点厌倦了.每天都是无休止地问题定位,需求会议.碎片化的时间写出来的代码都是无比的 ...
- DevOps之服务-监控工具
唠叨话 关于德语噢屁事的知识点,仅提供精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <DevOps教程> <DevOps之服务-监控工具> 注:关于监控工具的具体 ...
- Django创建通用视图函数
想在我们有两个视图: def thinkingview(request): user = request.user if request.method == 'GET': return render( ...
- C#设计模式之八桥接模式(Bridge)【结构型】
一.引言 今天我们要讲[结构型]设计模式的第二个模式,该模式是[桥接模式],也有叫[桥模式]的.大家第一次看到这个名称会想到什么呢?我第一次看到这个模式根据名称猜肯定是连接什么东西的.因为桥在我们现实 ...
- jfinal使用jstl表达的存在的问及解决
问题 使用jstl 的el表达式 传递数据刷新页面,页面数据不显示,经过验证,数据的确传递过去,但是官方文档并没有详细描述,getModel() 不需要设get set() ,但是使用jstl el表 ...
- Hi Java!!!---来自十八岁的程序员随笔
9月23日我正式加入了程序员的行列,在哪以前我都不知道程序员到底是干嘛的,电脑对于我来说也不过是打打游戏,玩玩QQ.转眼间一个月了,我真正的喜欢上了这门行业,当自己写出一个程序的时候特别有成就感,哪怕 ...
- Python Nose框架编写测试用例方法
1. 关于Nose nose项目是于2005年发布的,也就是 py.test改名后的一年.它是由 Jason Pellerin 编写的,支持与 py.test 相同的测试习惯做法,但是这个包更容易安装 ...