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,4,5,6]

它的原理非常的简单,但在这之前大家还需了解Javascript中的 indexOf()方法。

在W3CSchool它的解释是这样的

该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头

(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。

因为对大小写的区分问题还有一个小demo

var str="Hello world!"
document.write(str.indexOf("Hello") + "<br />") //0
document.write(str.indexOf("World") + "<br />") //-1
document.write(str.indexOf("world")) //6

indexOf() 方法对大小写敏感!

如果要检索的字符串值没有出现,则该方法返回 -1。

首选用arr2来索引arr[i](单字符串),因为arr2中为空所以可以索引到arr[i]的值,但是每循环一次arr2中的值就会多起来,当索引到相同的值时

就不会添加到arr2中,所有就起到了数组去重的效果。

时间: 2024-10-12 00:08:36

Javascript中的数组去重-indexof方法的相关文章

js中实现数组的indexOf方法

时间过得很快,转行做开发整一年了,打算出去见见世面.看我现在技术水平能达到什么层次,好确定以后的学习方向,也看看外面的公司都在使用一些什么样的技术. 昨天面了一家公司,对方直接让我答的压轴题.一个简单的算法设计题:熟悉js的同学知道js中字符串有个indexOf方法,现在需要实现数组的indexOf方法.由于本科并非计算机专业,编程方面的一些基本功还很不扎实(比如基础算法掌握程度.算法设计能力),昨天没把题目做对.今天赶紧写出来,以免以后遇上还得再去想.罗里吧嗦一顿,上代码吧还是: 1 Arra

JavaScript 几种数组去重的方法

一.利用for嵌套for,然后splice去重 let arr=[5,5,5,12,12,-3,33,33,35,8]; for( let i=0; i<arr.length;i++){ for(let k=i+1;k<arr.length;k++){ if(arr[i]===arr[k]){ arr.splice(i,1); i--; } }} console.log(arr) 二.Set方法去重 let arr = [1,2,2,3,4,3,1,6,7,3,5,7]; let s1 = n

javascript中关于数组的迭代方法

//都接受3个参数,分别为:值.在数组中的位置.数组对象本身 var num = [2, 1, 5, 4, 2, 1, 6, 8, 19]; //every:若每一项都返回true,则返回true var a= num.every(function(item,index,array){ return item>5 }); console.log(a); // false //filter:返回true项组成的数组 var b= num.filter(function(item,index,arr

javascript 中遍历数组的简单方法

在Javascript中有自带方便遍历数组的方法(此方法非彼方法不要误会哦): 1 .利用for( index in array ){}; 2.利用 array.forEach( function(element, index) {}: 但是它们两个是怎么遍历数组的呢,是正序还是倒序呢? <script> var arr = ["a","b","c","d","e"]; for (key in

JavaScript——数组的indexOf()方法在IE8中的兼容性问题

昨天在工作中遇到一个问题:数组的indexOf()方法在IE8中无效. 如以下代码在IE8中报错“对象不支持“indexOf”属性或方法”: var arr = [1,2,3]; var index = arr.indexOf(3); 解决方法1:在调用的indexOf方法前加上toString()将数组转换为字符串,再调用indexOf(),但是这时又发现3的index并不是我们预期的2,而是4,因为转换为字符串之后是"1,2,3",在查index的时候把逗号也算进去的了,显然这也不

js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法

var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf = function (e) { for (var i = 0, j; j = this[i]; i++) { if (j.indexOf(e) != -1) { return i; } } return -1; } if (anSwerIdValue.length < 14) { alert(&quo

数组的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

js数组去重的方法

1.如果不借助任何方法,初级写法应该是: function unique(arr){ var res=[]; for(var i=0,len=arr.length;i<len;i++){ var obj = arr[i]; for(var j=0,jlen = res.length;j<jlen;j++){ if(res[j]===obj) break; } if(jlen===j)res.push(obj); } return res; } var arr=[1,1,'2','1',3,4]

javascript中关于数组的一些鄙视题

一.判断一个数组中是否有相同的元素 /* * 判断数组中是否有相同的元素的代码 */ // 方案一 function isRepeat1(arrs) { if(arrs.length > 0) { var s = arrs.join(","); for(var i = 0,ilen = arrs.length; i < ilen; i+=1) { if(s.replace(arrs[i],"").indexOf(arrs[i])>-1) { ret