1.正常遍历
function remove(arr){
let result = []; //空数组保存结果。
for(var i =0;i<arr.length;i++){ //循环遍历数组。
if(!result.includes(arr[i])){ //对于arr中每一项:查看result中是否有该项。
result.push(arr[i]); //如果result中没有就push进去。
}
}
return result;//返回结果
}
2.利用Object属性名单一特性
原理:将数组每一项当做属性名传给空对象,再用Object.keys取出。
function remove(arr){
let obj = {};//创建空对象。
for(i=0;i<arr.length;i++){ //遍历数组。
if(!obj[arr[i]]){ //对于每一项:查看obj中是否有该属性名。
obj[arr[i]]=true; //如果没有,就为obj设置该属性名,属性值为ture。
}
}
return Object.keys(obj);/Object.keys取出属性名。
}
plus:关于取出对象属性的写法。
let obj = {
a:213,
b:true,
c:'444'
}
我们常用是.写法:obj.a,obj.b。
其实还有另一种obj[]写法:obj['a'],obj['b'],这里需要注意[]中是字符串。
漏掉'',比如obj[a],js会认为a是个变量,而上下文没定义a则会赋值undefined,从而报错。
obj.a //213
obj['a'] //213
obj[a] //ReferenceError: a is not defined
3.利用ES6的Set集合
let arr = [1,2,3,3,3,4,1,7,8]
let result = new Set(arr) //Set[6]
plus:Set集合转为数组的方法:
1.[...result] //[1, 2, 3, 4, 7, 8]
2.Array.from(result) //[1, 2, 3, 4, 7, 8]