每日分享!~ JavaScript数组去重
数组去重
数组去重在很多面试的过程中,都是大题出现!网络上出现了很多数组去重的方式。多数的达到了12种以上。
今天我只给大家介绍两种我比较喜欢,比较认可!入手简单的~能解决自己的问题就可以了
好了 ,不多bb,直接上代码:
方式1: indexOf
<script> // 业务要求 /** 数组的去重 **/ // 方式1 使用indexof方式 function ClearArray(arr){ // 创建一个新的数组来存放去重之后的数组 var newArr = [] // 将传入数组进行循环遍历处理 arr.forEach(item => { // 使用indexof 判断newArr中数组是否存在,不存在的话直接push进去 if ( newArr.indexOf(item) === (-1)) { newArr.push(item) } }) return newArr } // 测试数组 var arr = [1,3,4,5,6,4,33,3,3,,4,3] console.log(ClearArray(arr)) //结果 [1, 3, 4, 5, 6, 33] </script>
注意:这个判断是对于定义新数组去判断,不是对需要判断对数组。
总结,利用indexOf方法判断新数组中是否存在该元素,不存在的话,push 到新数组中去,如果push过,在次判断的时候,就会显示存在,这样就会直接跳过。
----------------------------------------黄金分割线---------------------------------------------------------------
方式2 splice()
直接上代码:
function ClearArray(arr){ // 首先循环遍历该数组 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) j-- } } } // return 该元素 return arr } var arr = [1,3,4,5,6,4,33,3,3,,4,3] console.log(ClearArray(arr))
// 结果 [1, 3, 4, 5, 6, 33, empty]
注意, 这个方式是通过二次循环来判断,一个元素同其他元素对比。如果与该元素相同的话,则需要通过splice方法,去掉该元素。
-----------------------------分割线------------------------------------------
总结以上两种方法的差异:
相信大家通过结果。关注了两个方式的结果不一致,第一个结果去重:将空元素都去掉了。第二个方式没有,而是显示的empty 。
如果该元素不需要空元素的话,建议使用第一种方式。如果需要的话, 建议使用第二种方式。
一份帮助文档,无论多么仔细,都不会帮助主人多敲一行代码!