js-数组去重的方法
在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; }