// 对象的基本特点1:
// 对象中,如果给已经存在的属性,进行赋值
// 会是给对象修改存储数据的操作
// 不会新增一个属性和属性值单元
var obj={a:100};
// 修改a中存储数据操作
// 不会新增一个a单元存储200
obj.a = 200;
// 数组的去重4
// 思路:将数组的数据,写成对象的属性
// 如果有重复的数据,对象也不会新增属性,会对已有的属性做重复赋值操作
// 执行之后,对象的数据,就是数组中不重复的数据
var arr = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
var obj = {};
var newArr = [];
// 循环遍历数组,将数组的数据,作为对象的属性
arr.forEach(function(v){
// 将数组的数值,作为属性,写入到对象中,对象的属性值可以随便写
obj[v] = '随便写';
})
console.log(obj);
// 将对象的属性,在写成新的数组的数值数据
// key当中存储的是对象的属性
for(var key in obj){
// 将对象的数据,作为数值数据,写入到数组中
newArr.push(key);
}
// 新数组中,存储的数值,数据类型都会是字符串
// 后期会通过正则表达式,验证数据内容,如果是纯数值字符串,就转化为数值
console.log(newArr);
// 记录字符或者数据出现的次数
var str = 'aaaabbbbbcccccdddeeefffgggggg';
// 将字符串的字符获取,作为对象的键名
// 对象是不会有重复键名的,重复键名是对象存储数据的修改操作
var obj = {};
// i存储的是字符串的索引 str[i] 是对应的字符
for(var i in str){
// 将字符串的字符,作为键名,定义给对象
// 如果是第一次定义,赋值为0
// 如果已经有这个键名了,应该给存储的数值 +=1 或者 ++
// 如果有这个键名,调用这个键名结果不是undefined
// 如果没有这个键名,调用这个键名结果是undefined
// 从obj对象中,调用 当前字符 表示的键名
if(obj[str[i]] === undefined){
// 如果调用结果是undefined,证明对象中没有这个键名
// 新增对象的单元,键名是这个字符,数值是 1
obj[str[i]] = 1;
}else{
// 调用结果不是undefined,证明对象中已经存在这个键名
// 存储数值数据 +=1 或者 ++
obj[str[i]]++;
}
}
console.log(obj);
// 总结
// 利用对象不能写入重复的键名特点
// 将字符串中的字符,合作是数组中的数据等
// 作为对象的键名
// 先执行判断
// 如果 调用 字符表示的键名,结果是undefined,证明没有这个键名
// 给对象新增单元,键名是字符,数值是1,表示这个字符第一次出现
// 如果 调用 字符表示的键名,结果不是undefined,证明已经存在这个键名
// 给这个键名存储的数据 += 1 或者 ++ 累加1