数组去重包括es6的新方法
我们调用一个数组的时候有时候只做记录出现过哪些数,这个时候重复出现的就可以排除掉,例如通过摄像头拍摄的画面来记录有多少人通过,重复拍到的人也只能算一个。这个时候就要排除掉重复出现的元素,这就是数组去重的概念。
有许多中方法可以做到数组去重的目的,我们一个一个来解析他们。
第一种方法:创建空数组result,装arr中不重复的值,重复的值保留一个
把从第一个数组里拿出来的元素与新数组里的每一个元素做比较,没有相等的即为新数组里没有这个元素,将它传入新数组中,再从第一个数组中拿第二个元素,循环
function web(arr){
for (var i = 0,result=[]; i < arr.length; i++) {
//遍历数组arr
for (var j = 0; j <result.length; j++) {
//令arr中的值与result的值作比较,相等则开始下一个循环,不等就出循环
if (arr[i]==result[j]) {
break;
}
}
//如果result里没有与arr[i]相等的值 就把arr[i]加入result中
if (result.length==j) {
result[result.length]=arr[i];
}
}//返回result的值
return result;
}//var arr=[1,3,3,3,5,5,4,8,9,7];
console.log(web([1,3,3,3,5,4,5,8,9]));
第二种方法:第一步一样页数创建空数组result,另外再创建一个hash数组,这个数组的下标就是第一个数组的元素
第一个数组的元素就是hash数组的下标,满足这个条件的,就把这个下标元素传入数组result,重复添加元素,判断
function web2(arr){
//创建一个hash数组 一个用来放arr里不重复的元素的数组arr1,
for (var i = 0,hash=[],arr1=[]; i < arr.length; i++) {
//arr里的元素为hash数组的下标
if (hash[arr[i]]===undefined) {
//将满足条件的元素传入arr1
arr1[arr1.length]=arr[i];
//给hash数组添加元素
hash[arr[i]]='';
}
}return arr1;//返回去重的数组
}console.log(web2([1,3,3,3,5,5,4,8]));
第三种方法和第四种方法:这里用到的是ES6的知识,是属于新的方法
function web3(arr) {
return Array.from(new Set(arr))
}
console.log(web3([1,2,2,2,2,2,2,3,5]));
function web4(arr) {
const res = new Map();
return arr.filter((a) => !res.has(a) && res.set(a, 1))
}
console.log(web4([1,2,2,2,2,2,2,3,5,6,7,8]));
代码的量是一种比一种少,这也证明了技术的发展带来的是越来便利,再达到目标需求的前提,精简代码的量就是新技术的作用了。