数组去重
js中的数组去重
1.创建一个新数组,把数组中的每一个元素插入到新数组中
2.遍历原数组中每一个元素分别和新数组中的每一个元素进行比较
1.对一个数组去重处理
第一种去重方法
<script>
//原数组
var arr = [1,2,5,41,1,2,1,4,5,8,10]
//新数组
var t = [];
t[0] = arr[0];
//arr中的每一个元素
for (var i = 0;i < arr.length; i ++){
//t中的每一个元素
for (var j = 0;j < t.length;j++){
//当原数组中的值和新数组中的值相同的时候,就没有必要再继续比较了,跳出内循环
if (t[j] == arr[i]){
break
}
//拿原数组中的某个元素比较到新数组中的最后一个元素还没有重复
if (j == t.length-1){
//将数据插入到新数组
t.push(arr[i])
}
}
}
</script>
可以把数组去重定义成函数
<script>
var arr1 = [1,2,5,41,1,2,1,4,5,8,10];
function arrayFilter(arr){
var newArray = [];
newArray [0] = arr[0];
for(var i = 0;i<arr.length;i++){
for(var j = 0;j<newArray.length;j++){
if(arr[i]==newArray[j]){
break;
}
if(j == newArray.length-1){
newArray.push(arr[i])
}
}
}
console.log(newArray)
}
arrayFilter(arr1)
</script>
第二种方法 使用es6 中的 Set函数
var arr = [1,2,5,41,1,2,1,4,5,8,10];
let t = Array.from(new Set(arr))
console.log(t)
2.取出两个数组中相同的数据
<script>
var arr1 = [1,3,4,54,6,4,23,674,4,2,1,2,3,80]; //声明第一个数组
var arr2 = [1,3,4,6,78,5,65,6,5,6,56,5,75,80]; //声明第二个数组
var arr3 = []; //声明第三个空数组,放第一个数组和第二个数组相同的数据
for (var i = 0;i <arr1.length;i++){
for (var j = 0; j < arr2.length; j++){
if (arr1[i] == arr2[j]){
arr3.push(arr1[i])
}
}
}
console.log('取出两个数组中相同的元素',arr3)
</script>
结果:
由于新数组中有重复的数据可以使用数组去重把重复的数据去除。
console.log('对数组arr3去重',Array.from(new Set(arr3)))
3.获取两个数组不相同的数据
<script>
var arr1 = [1,3,4,54,6,4,23,674,4,2,1,2,3,80]; //声明第一个数组
var arr2 = [1,3,4,6,78,5,65,6,5,6,56,5,75,80]; //声明第二个数组
// 获得两个数组中不一样的数据
function getDifferent(arr1,arr2){
return arr1.concat(arr2).filter(function(v,i,arr){
return arr.indexOf(v) === arr.lastIndexOf(v)
})
}
console.log(getDifferent(arr1,arr2))
</script>
**
4.把两个数组合并成一个数组,并去掉相同的数据
**
<script>
var arr1 = [1,3,4,54,6,4,23,674,4,2,1,2,3,80]; //声明第一个数组
var arr2 = [1,3,4,6,78,5,65,6,5,6,56,5,75,80]; //声明第二个数组
//arr1.concat(arr2) 数组arr1和数组arr2合并成一个新数组。
console.log(Array.from(new Set(arr1.concat(arr2))))
</script>