方法一(使用es6新增的set构造函数)
function DeWeight(arr){
return [...new Set(arr)]
}
console.log(DeWeight([1,2,"2",3,5,3,2]))
复制代码
方法二: (使用indexOf方法)
function DeWeight(arr){
/**
* 第一步:初始化一个新数组
* 第二步:遍历传进来的数组,拿数组中的每个元素经过indexOf函数里面查找,
* 若是没查出来,就把当前元素丢到新数组中,不然已经有了,管它弄啥
*/
let newArr = []
for(let i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i])
}
}
return newArr
}
console.log(DeWeight([1,2,"2",3,5,3,2]))
复制代码
方法三:(双循环)
function DeWeight(arr){
/**
* 第一步: 初始化一个数组
* 第二步:使用双层循环,拿外层循环中的一个元素跟后面的全部元素进行比较,
* 若是都不相等,就把它push到新数组中,不然外层下表+1,继续比较
*
* 注:实现原理是每一个元素都跟后面的元素比较,取相同元素的最后一个元素
*/
let newArr = []
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
if(arr[i] === arr[j]){
i++
}
}
newArr.push(arr[i])
}
return newArr
}
console.log(DeWeight([1,2,"2",2,3,5,3]))
复制代码
方法四:(es6数组中的filter方法)
function DeWeight(arr){
/**
* 第一步:初始化一个map对象
* 第二步:经过数组的filter方法过滤全部元素,利用map的has方法判断传进来的每个元素,
* 若是此元素没有在map里面,就+到map里面去返回true,不然false
*
* 注:数组的filter() map的has() set()
*/
var map=new Map();
let newArr = arr.filter(function(item){
if(!map.has(item)){
map.set(item)
return true
}else{
return false
}
})
return newArr
}
console.log(DeWeight([1,2,"2",2,3,5,3]))
复制代码
方法五:(es6数组中的includes方法)
function DeWeight(arr){
/**
* 第一步:初始化一个新数组
* 第二步:遍历传进来的数组,经过使用数组的includes方法判断每个元素是否在新数组中,
* 若是没有,就把此元素丢到新数组中,不然下一个
*/
let newArr = []
for(let i=0;i<arr.length;i++){
if(!newArr.includes(arr[i])){
newArr.push(arr[i])
}
}
return newArr
}
console.log(DeWeight([1,2,"2",3,5,3,2]))
复制代码