2

これが私の質問です...

関数パラメーターとして数値が入力された配列を指定すると、配列からの重複数値を含む結果の配列が生成されます。たとえば、配列 [ 1, 2, 4, 4, 3, 3, 1, 5, 3 ] を指定すると、[1, 4, 3] が返されます。追加のボーナス ポイントについては、並べ替えられた配列を返します。

私はJavascriptから始めています-言語は知っていますが、正しい方法で(あるべきように)使用していますが、まだ理解しています。

これに対する私の擬似コードは次のようになります。

上記の数値で配列を作成しますvar numbers = [1, 2, 4, 4, 3, 3, 1, 5, 3];

次に、「result」という名前の空の配列を作成しますvar result = [];

var 番号を調べて重複をチェックする for ループを作成し、空の配列「結果」に重複を入力します。

for (var i = 0;i < numbers.length; i++) {
 //This is where I'm stuck...
}

for ループ内で var の結果を入力し、ミックスに投入するために何をすべきかわかりません...指定された配列は、1 か所で数値を変更できるように意味のある関数パラメーターである必要があります。

これまでの私の思考プロセスに関するフィードバックは大歓迎ですが、最終的にはこれを達成する方法を学びたいと思っています.

これまでの私の進捗状況の JSFiddle は次のとおりです... http://jsfiddle.net/fbauW/

4

2 に答える 2

5

これを行う 1 つの方法 (これが唯一の方法ではありません) は、配列内の既存の要素をチェックすることです。JavaScript の lastIndexOf 関数を見てみましょう。

http://www.w3schools.com/jsref/jsref_lastindexof_array.asp

オブジェクトが配列に存在しない場合は -1 を返し、存在する場合は、現在よりも後の位置のインデックスを返します。したがって、ループ内で if ステートメントを使用して、存在するかどうかを確認できます。あなたの番号を含む別のインデックスを結果配列に追加します IF AND ONLY IF AND ONLY IF 返されるインデックス != 現在のインデックス (それらが等しい場合、これはリストにその要素が 1 つしかないことを意味します) .

さらにヘルプが必要な場合は、ここにコメントしてください。コードを入力できます。

幸運を!

于 2013-07-31T11:31:24.380 に答える
1
Array.prototype.contains = function(k) {
  for ( var p in this)
    if (this[p] === k)
      return true;
  return false;
};
//this prototype function checks if an element is already in the array or not
//go through all the array and push the element to result if it is not 
//this way we can eliminate duplicates 
//result will contain the resultant array
function findDuplicates(Numbers) {
  var arrayLength = Numbers.length, i, j, result = [];
  for (i = 0; i < arrayLength; i++) {
    for (j = 0; j < arrayLength; j++) {
      if (a[i] == a[j] && i != j && !result.contains(a[i])) {
        result.push(a[i]);
      }
    }
  }
  return result;
}
于 2013-07-31T11:26:04.843 に答える