2016-09-25 16 views
-5

をjavascript配列配列要素が二回繰り返された場合に選択してください - Javascriptの

var arr = [0, 1, 2, 2, 3, 3, 5]; 

は、私が二回繰り返される要素を選択する必要があります。この場合、その23です。私は変数にそれらを添付したい。

var a = 2, b = 3; 

私の知る限り、その仕事を行うための組み込み関数はありません。どうやってやるの。ありがとう。

+1

問題を解決するために努力します(そして、それを研究するために、私はこれが尋ねられ、答えられていると確信しています)。前の質問を見つけられず、自分のコードを動作させることができない場合は、あなたの試行を示す質問を投稿し、特定の質問をしてください。 –

+0

正確に2回、または少なくとも2回ですか? – Oriol

+0

は(常に)ソートされた配列ですか? –

答えて

1

filterを使用して、2回発生する値を取得できます。コメントで

var arr = [0, 1, 2, 2, 3, 3, 5]; 
 

 
var dups = arr.filter ((v,i,a) => a.indexOf(v) < i); 
 

 
console.log(dups);

あなたが唯一のダブルスが、二回以上発生なしの値を持つことになり述べました。後者が当てはまる場合、上記は1回以上値を返すことに注意してください。

これは配列の値を返します。これはどのように動作するかです。

var [a, b, ...others] = dups; 

を...しかし、あなたはそれのために予約するどのように多くの変数を知っている必要があります、それはあなたの更なるプログラムがどの楽にしません。別々の値に入れてするには、以下のように行うことができます。 JavaScriptには、配列の素晴らしい機能(メソッド)がたくさんあるので、実際に配列に残すべきです。

+0

'=>'とはどういう意味ですか? –

+0

[arrow functions](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions)を参照してください。 – trincot

0

確かにそれを行う機能はありません。

応答配列を構築しながら、配列をループし、要素の出現数を記録しておく必要があります。

0

ソートされた配列をフィルタリングすることができます。これを行うには

var arr = [0, 1, 2, 2, 3, 3, 5], 
 
    repeats = arr.filter(function (a, i, aa) { 
 
     return aa[i - 1] === a; 
 
    }); 
 

 
console.log(repeats);

0

ほとんどの簡単な方法は以下の通りです:

var dups = []; 

var arr = [0, 1, 2, 2, 3, 3, 5]; 

arr.forEach(function (v, i, a){ 
    delete arr[i]; 
    if (arr.indexOf(v) !== -1){ 
    dups.push(v); 
    } 
}); 

console.log(dups); 

それはしかし、破壊的です。

関連する問題