方式一:双层for循环
function distinct(arr) {//需要去重的数组arr
for (let i=0, len=arr.length; i<len; i++) {
for (let j=i+1; j<len; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);
// splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一
len--;
j--;
}
}
}
return arr;
}
方式二:Array.filter() 加 Array.indexOf()
<script>
const arr = ['1','4','4','2','1','2','3'];
const newArr = arr.filter((item,index)=>{
return arr.indexOf(item)===index;
})
console.log(newArr);//(4) ["1", "4", "2", "3"]
</script>
方式三:es6中的Set去重
<script>
const arr = ['1','4','4','2','1','2','3'];
const newArr = [...new Set(arr)];
console.log(newArr);//(4) ["1", "4", "2", "3"]
</script>
方式四:Object 键值对,利用一个空的 Object 对象,我们把数组的值存成 Object 的 key 值
<script>
var arr = [1,2,3,2,3,4,4,6,6,7,7,7,1];
//将数组转换成对象
//利用对象的key值不能重复这一特性
function toObject(array) {
var obj = {};
let j = array.length;
for(let i=0;i<j;i++){
obj[array[i]] = true;
}
return obj;
}
let mid = toObject(arr);
console.log(mid);
//{1: true, 2: true, 3: true, 4: true, 6: true, 7: true}
//再将对象转换成数组
function toArray(obj){
var arr = [];
for(var i in obj){
arr.push(i);
}
return arr;
}
let res = toArray(mid);
console.log(res);
//(6) ["1", "2", "3", "4", "6", "7"]
</script>
1821

被折叠的 条评论
为什么被折叠?



