在js中我们想对数组中对于数字重复的值进行操作只显示一个,就分享几个方法
1、数组的indexOf()方法
<script>
(function () {
var box = document.getElementById('box');
var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7];
norepeat(arr);
function norepeat(arr) {
var arr1 = [];//声明一个空数组来存放去重之后的数组
arr1 = arr.filter(function (item) {
if (arr1.indexOf(item) == -1) {
return arr1.push(item);
}
})
console.log(arr1);
}
})();
</script>
2、用数组includes()方法(比indexOf()方便)
function norepeat2(arr) {
//arr是要去重的数组
var newarr = [];//准备用来存放去重之后的数据
arr.forEach(function (item) {
if (!newarr.includes(item)) {//1 2 1 2 3 4
//不包含
newarr.push(item);//1 2 3 4
}
});
return newarr;
}
3、利用对象
声明一个空对象来,遍历数组判断对象是否有当前值,有就跳过,无就执行判断语句将值作为属性名存入对象
function norepeat3(arr) {
var obj = {
// 1 : true,
// 2 : true,
// 3 : true,
// 4 : true
};//开关
arr.forEach(function (item) {//
if (!obj[item]) {//obj.1 obj.2 obj.1 obj.2 obj.3
obj[item] = true;//对象的赋值 item就是作为键名;true作为键值
}
});
var newarr = [];
for (var key in obj) {
//遍历对象
newarr.push(key * 1);
}
console.log(obj);
return newarr;
}
来源:https://www.cnblogs.com/muyun123/p/11398958.html