Hay tres puntos importantes:
1. A través de bucles for anidados, compare cada elemento de la matriz con todos los elementos de la matriz completa;
2. A través del juicio if, si hay un elemento igual, cuente ++ y establezca el elemento igual en -1, de modo que pueda juzgarse que el elemento igual a -1 es un duplicado y no se agrega una nueva matriz;
3. Use if para juzgar! = - 1, decida si agregar a la nueva matriz y regrese.
function arrCheck(arr){
var newArr = [];
for(var i=0;i<arr.length;i++){
var temp=arr[i];
var count=0;
for(var j=0;j<arr.length;j++){
if(arr[j]==temp){
count++;
arr[j]=-1;
}
}
if(temp != -1){
newArr.push(temp+":"+count)
}
}
return newArr;
}
arrCheck([1,2,3,3,4]);
console.log(arrCheck([1,2,3,3,4]));
Podemos usar reducir para resolver este problema.
Inicializamos el tipo y valor del primer parámetro de la función de devolución de llamada en el segundo parámetro de reduce, y convertimos la cadena en una matriz, luego el resultado de la iteración será un objeto, y cada valor clave del objeto es la letra de la cuerda. Ejecútelo y siéntelo.
var arrString = 'abcdaabc';
sum = arrString.split('').reduce(function(res, cur) {
res[cur] ? res[cur] ++ : res[cur] = 1 return res; }, {
})
console.log(sum)