解题方案:
var uniqueOccurrences = function(arr) {
const newMap = new Map();
for(let i=0;i<arr.length;i++){
if(newMap.has(arr[i])){
newMap.set(arr[i],newMap.get(arr[i])+1);
}else{
newMap.set(arr[i],1);
}
}
const times = new Set();
for (const [key, value] of newMap) {
times.add(value);
}
return newMap.size===times.size;
};
主要是学会了Map 对象和Set 对象的使用:
Map 对象保存键值对,并且能够记住键的原始插入顺序。用来保存数组中每个值出现的次数:值=>次数;
has()方法用来判断Map实例中是否所查询的键值,get()方法用来获取键对应的值,set()方法用来设置键的值,还有clear()方法清除所有键值对,delete()用来删除某个键值对;
Set 对象存储任何类型的***唯一***值,无论是原始值或者是对象引用。用来过滤掉值相等的键值对;
add()方法用来向Set 对象中添加一个元素,has()方法用来判断Set中是否含有该元素,clear()用来清除Set中所有元素,delete()用来清除set中某个元素;
最后通过判断Map的size和Set的size是否相等来判断是否有重复的出现次数;