2017-10-28 5 views
0

私はグーグルグーグルで、アレイなどにさまざまなフィルタを使用しようとしましたが、無駄です。Javascriptの配列で正確な一致(重複)を見つけて返します

私はそうのような文字列の配列を持っている:

var foo = ['1X31UX11','X3U11X1','33X11U12']; 

は、アレイにお互いに対してすべての文字列をチェックする方法はありますし、完全一致(文字のすなわち正確に同じ順序があるかどう)それは特定の文字列が何回出現するかを表示します&も問題の文字列を出力しますか?

+0

はい、それが可能だ(実際にはかなり簡単に書くことができます) - あなたの試行を示して、問題の内容を説明してください裾が – UnholySheep

+0

のように見えますか? – zer00ne

+0

中規模のデータセットwです。 2-300件のエントリがありますので、配列やオブジェクトに重複したエントリを収集したいのですが ['string 1':15回、 'string 2:12回、string 3:8回] – user2868900

答えて

2

function arrayRepeats(array) { 
 
    var returnObject = {}; 
 
    for (var i = 0; i < array.length; i++) { 
 
     if (returnObject[array[i]]) { 
 
      returnObject[array[i]]++; 
 
     } else { 
 
      returnObject[array[i]] = 1; 
 
     } 
 
    } 
 
    return returnObject; 
 
} 
 

 
var foo = ['1X31UX11','X3U11X1','33X11U12']; 
 
console.log(arrayRepeats(foo)); 
 
var bar = [1, 1, 2, 1, 3, 1, 31, 3, 1, 5, 4, 1]; 
 
console.log(arrayRepeats(bar));

+0

ああ、 ありがとうございました!今は完璧です!私は似たようなアプローチをしていましたが、他のステートメントを忘れてしまいました(関数をほとんど役に立たないようにしています)。 – user2868900

+0

@ user2868900あなたの質問に出会った人々を表示する回答を受け入れることができます – zevee

1

使用Array#reduce対象に、各文字列の出現回数を収集する:

var foo = ['1X31UX11','X3U11X1','33X11U12', '1X31UX11']; 
 

 
var result = foo.reduce(function(count, str) { 
 
    count[str] = (count[str] || 0) + 1; 
 
    
 
    return count; 
 
}, {}); 
 

 
console.log(result);

関連する問題