数组去重
说到数组去重小编准备了两种方案
1.第一种splice(删除项下标,删除几个)
现有数组
var arr = [1,2,3,3,6,2,6,1,4]
我们要去掉数组中重复项 那我们肯定要做对比所以 循环遍历是不可少的
var arr = [1,2,3,3,6,2,6,1,4]for (var i = 0; i < arr.length; i++){ //}
我们用数组长短 来控制它循环多少次
接下来 我们需要做的是 拿数组里面的数 跟每一项做一个对比
如果是重复的就去除
那么我们还需要一个循环来遍历数组 所以我们在循环里面再套一个循环
道理懂了 那么我们能跟数组的自己比吗?
肯定不行 那么第二层的循环要从第一层开始数的 下一个开始 所以就是i+1
var arr = [1,2,3,3,6,2,6,1,4]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--}}}
所以我们用数组api **splice(删除项下标,删除几个)**来删掉 然后
因为数组长度发生改变所以我们还要j–来把数组全都走完这样我们就去重了
2.第二种利用对象去重
首先定义一个对象
循环肯定不能少
var arr = [1,2,3,3,6,2,6,1,4]var obj = {}for (var i = 0; i < arr.length; i++) {}
原理:对象的属性名不会重复 所以我们用这个特点把数组中的值变成对象的属性
那么我们来判断对象里面是否有这个属性
var arr = [1, 2, 3, 3, 6, 2, 6, 1, 4]var obj = {}for (var i = 0; i < arr.length; i++) {if (obj[arr[i]]) {obj[arr[i]]++} else {obj[arr[i]] = 1;}}
当有这个属性就加一 没有就给它赋值为1 让它存在
接下来我们再遍历对象获取它的属性名 添加到数组
var arr = [1, 2, 3, 3, 6, 2, 6, 1, 4]var obj = {}for (var i = 0; i < arr.length; i++) {if (obj[arr[i]]) {obj[arr[i]]++} else {obj[arr[i]] = 1;}}arr = []for (var j in obj) {arr.push(j)}
这样就得到了去重后的数组 这两种方法都是改变了原数组 所以不建议