1.Set+Array.from
利用Set数据不重复的特点,结合Array.from
Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组,也是ES6的新增方法。
var arr=[1,2,3,4,5,6,6,5,4,3,2,1]
function Array(arr){
return (Array.from(new Set(arr)))
}
console.log(Array(arr))
2.includes
利用了includes检查新数组是否包含原数组的每一项。如果不包含,就push进去。
includes()方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false
var arr=[1,2,3,4,5,6,6,5,4,3,2,1]
function Array(arr){
let newArr=[]
for(let i=0;i<arr.length;i++){
newArr.includes(arr[i])?newArr:newArr.push(arr[i])
}
return newArr
}
console.log(Array(arr))
3.for + object
利用对象属性名不能重复的特性,如果对象中不存在,就可以给push进去。
var arr=[1,2,3,4,5,6,6,5,4,3,2,1]
function Array(arr){
let newArr=[]
let obj={}
for(let i=0;i<arr.length;i++){
if(!obj[arr[i]]){
newArr.push(arr[i])
obj[arr[i]]=1
}else{
obj[arr[i]]++
}
};
return newArr
}
console.log(Array(arr))
4.Map
Map遍历整个数组,对里面的每个值做处理再返回一个新的值 利用数据结构存值的特点
var arr=[1,2,3,4,5,6,6,5,4,3,2,1]
function Array(arr){
let newArr=[]
let map=new Map()
for(let i=0;i<arr.length;i++){
if(!map.has(arr[i])){
map.set(arr[i],true)
newArr.push(arr[i])
}
};
return newArr
}
console.log(Array(arr))
5.reduce
第一个参数为初始值, 或者计算结束后的返回值。 第二个参数,当前元素 !!reduce里面有一定要return,return出去的值也要注意
var arr=[1,2,3,4,5,6,6,5,4,3,2,1]
function Array(arr){
let newArr=[]
return arr.reduce((prev,next,index,arr)=>{
//如果包含,就返回原数据,不包含,就是把新数据追加进去
return newArr.includes(next)?newArr.push(next)
},0)
}
console.log(Array(arr))
参考于:http://t.csdn.cn/w1WEU
若有疑问,请及时指出哦
小作者持续更新中…