对象的属性特点:
一个对象中,相同的键名,只能建立一个,再对已经存在的键名进行赋值,是覆盖数据操作
举一个例子:
var obj = {name:'张三'};
obj.name = '李四';
console.log(obj);
这里输出的结果是’李四’,说明再对已经存在的键名进行赋值会进行覆盖操作
数组去重的思路
// 利用对象的属性
// 循环遍历数组,将数组的数值获取,作为对象的键名来赋值
// 循环遍历之后,对象中,所有键名就是数组中的不重复数据
// 再循环遍历对象,将对象的键名获取,写成数组的数据
var arr1 = [1,1,1,1,2,2,2,3,3,3,4,4,4,4,5,5,5];
console.log(arr1);
var obj1 = {};
var newArr = [];
arr1.forEach(function(val){
obj1[val] = '';
})
for(var item in obj1 ){
newArr.push(item);
}
console.log(newArr);
总结思路
第一步: 将数组的数值,作为对象的属性/键名,利用对象不能有重复 属性/键名 的特点,去除数组
重复数据,重复数据,不会生成新的 对象的属性/键名
第二步: 将对象的 属性/键名 写成新数组的数据