在逆战班学习了数组去重,那么今天就总结下数组的去重,何为数组去重,就是说在数组中有很多单元,其中有部分单元的内容是重复的,我们就是要获取不重复的数组,这样就要将重复的单元去除,这就是数组去重的基本原理:
我们先来看下数组去重的代码:
现在对代码做一个解释:
代码第一行:模拟一个新数组,数组内存储的数值为[11,11,22,33,44,22,11,
44,55,66,55,33]。
代码第二行:定义一个新的空数组,用以储存不重复的数值。
代码第三行:通过forEach来遍历数组arr找到每一个单元存储的数值。forEach循环遍历的语法格式为:数组/变量.forEach(function(形参1,形参2,形参3){执行的代码}),其中形参1为每一个单元存储的数值,形参2为每一个单元对应的索引下标,形参3为原始数组。如果只设置一个参数,那么就代表着每一个单元存储的数值,如果设置两个,那么第一个为存储的数值,第二个为索引下标,一般我们会设置这两个参数,但是在这儿,我们只设置了一个,因为我们只需要拿到数值就可以了。
代码第四行:这是做一个判断,通过indexOf来判断:它的语法格式为
数组.indexOf(),它的作用是查找()内的数值是不是在这个数组内,如果不在的话数组.indexOf() === -1;否则就不在。我们是通过这个来判断()内的数值是否在新数组中。
代码第五行:它的作用为if判断为真时的执行语句,也就是说当if判断为真的时候会执行这个代码。这个代码的意思是将()内的数值写入新的数组中,它
的格式为 数组.push()。意思就是将()内的内容写入数组内。
我们还可以通过for…in循环遍历来实现整个过程:
用for…in循环的话,与forEach有这些区别:首先for…in这个循环遍历的是数组的索引下标,所以将forEach中的val换成arr[key]即可。
纵观整个过程,它的原理就是,通过数组/变量.forEach(function(形参1,形参2,形参3){执行的代码})遍历每一个数值,然后利用数组.indexOf()来查找每一个原始数组中的数值是否在新数组中,如果不在的话就通过数组.push()写入新数组。这样我们就会实现数组的去重。