方法一(使用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]))