js数组去重 及 计算字符串中字符的个数
1、数组去重。
方法一:
var arr = [1,2,3,4,5,1,3,12,55,22];
function getArray(a){
var obj = {},
resultArray = [];
for(var i=0;i<a.length;i++){
obj[a[i]]=a[i];
console.log(obj);//纯数字时自带排序
}
for(var i in obj){
resultArray.push(obj[i]);
}
console.log(resultArray);
}
getArray(arr);//[1, 2, 3, 4, 5, 12, 22, 55]
方法二:不存储排序,只利用hash去重
var arr = [1,2,3,4,5,1,3,12,55,22];
function getArray2(a){
var obj = {},
resultArray = [];
for(var i=0;i<a.length;i++){
if(!obj[a[i]]){
obj[a[i]]=true;
resultArray.push(a[i]);
}
}
console.log(resultArray);
}
getArray2(arr);//[1, 2, 3, 4, 5, 12, 55, 22]
2、给一个字符串,输出里面的字母分别出现的次数。
将上题中的hash值改为计数器就可以了:
var string = "serdtfyghjhbuygfct";
function getCount(str){
var obj = {},
a = str.split("");
for(var i=0;i<a.length;i++){
if(!obj[a[i]]){
obj[a[i]]=1;//发现是新的value
}else{
obj[a[i]]+=1;
}
}
console.log(obj);
}
getCount(string);//Object {s: 1, e: 1, r: 1, d: 1, t: 2…}