3つの重要なポイントがあります:
1.ネストされたforループを介して、配列の各項目を配列全体のすべての項目と比較します。
2. if判定により、等しいアイテムがある場合はcount ++し、等しいアイテムを-1に設定します。これにより、-1に等しいアイテムが重複していると判断でき、新しい配列は追加されません。
3. ifを使用して!=-1を判断し、新しい配列に追加するかどうかを決定して、戻ります。
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]));
この問題を解決するためにreduceを使用できます。
コールバック関数の最初のパラメーターのタイプと値をreduceの2番目のパラメーターで初期化し、文字列を配列に変換すると、反復の結果がオブジェクトになり、オブジェクトの各キー値は文字になります文字列の。それを実行し、それを感じます。
var arrString = 'abcdaabc';
sum = arrString.split('').reduce(function(res, cur) {
res[cur] ? res[cur] ++ : res[cur] = 1 return res; }, {
})
console.log(sum)