重量(重複する要素が、1つ)を達成するJSアレイ
1.反復方法
これは、最も単純な配列の重複排除方法(indexOfメソッド)であります
アイデアの実現:新しい値が配列(のindexOf -1)でない場合、重くなるようにアレイを横断する新しいアレイが新しいアレイに添加しました。
VaRのARR = [2,8,5,0,5,2,6,7,2]。 関数unique1(ARR){ VARハッシュ= []; 用(VAR i = 0; I <arr.length; iは++){ IF(hash.indexOf(ARR [I])== - 1){ hash.push(ARR [I])。 } } ハッシュを返します。 }
2.解析方法アレイ添字
indexOfメソッド、パフォーマンス、ほぼ1をコール
アイデアの実現:私はない現在の配列位置で初めてのアイテムIの現在のアレイは、次にiが繰り返される項目を表す場合、無視。そうでなければ、結果は配列に格納されています。
関数unique2の(ARR){ VARハッシュ= []; 用(VAR i = 0; I <arr.length; iは++){ IF(arr.indexOf(ARR [I])== I){ hash.push(ARR [I])。 } } ハッシュを返します。 }
3.ソート隣接除去方法
アイデアの実現:同じ値が隣接することになる注文後、その後、唯一の新しい配列が以前の値と重ならない追加、並べ替え後の配列を横断し、渡された配列をソートします。
関数unique3(ARR){ arr.sort()。 VARハッシュ= [0] [ARR]。 用(VAR I = 1; I <arr.length; iは++){ IF(ARR [I] =ハッシュ[hash.length-1]!){ hash.push(ARR [I])。 } } ハッシュを返します。 }
4.最適化法(参考)を繰り返します
アイデアの実現:ダブルループは、外側ループは0からarr.lengthを表し、サイクルがarr.lengthにI + 1を表します
新しい配列に正しい値を複製しません。(外側のループは、同じ時間を繰り返したときに、現在のサイクルで検出され、判定の値に終了します)
関数unique4(ARR){ VARハッシュ= []; 用(VAR i = 0; I <arr.length; iは++){ 用(VARのJ = I + 1、J <arr.length; J ++){ IF(ARR [I] === ARR [J]){ + + I; } } hash.push(ARR [I])。 } ハッシュを返します。 }
達成5.ES6
基本的な考え方:ES6は、新しいデータ構造のセットを提供します。これは、配列に類似しているが、メンバーの値は、重複する値が一意ではありません。
パラメータとして配列(または配列のようなオブジェクト)を受け入れることができる設定機能は、初期化するために使用されます。
関数unique5(ARR){ VAR X =新しいセット(ARR)。 戻る[... X]; }
拡張:繰り返される場合は、この要素が削除されます
配列の添字の重複除外
関数unique22(ARR){ VARハッシュ= []; 用(VAR i = 0; I <arr.length; iは++){ IF(arr.indexOf(ARR [I])== arr.lastIndexOf([I])ARR){ hash.push(ARR [I])。 } } ハッシュを返します。 }
1.反復方法
これは、最も単純な配列の重複排除方法(indexOfメソッド)であります
アイデアの実現:新しい値が配列(のindexOf -1)でない場合、重くなるようにアレイを横断する新しいアレイが新しいアレイに添加しました。
VaRのARR = [2,8,5,0,5,2,6,7,2]。 関数unique1(ARR){ VARハッシュ= []; 用(VAR i = 0; I <arr.length; iは++){ IF(hash.indexOf(ARR [I])== - 1){ hash.push(ARR [I])。 } } ハッシュを返します。 }
2.解析方法アレイ添字
indexOfメソッド、パフォーマンス、ほぼ1をコール
アイデアの実現:私はない現在の配列位置で初めてのアイテムIの現在のアレイは、次にiが繰り返される項目を表す場合、無視。そうでなければ、結果は配列に格納されています。
関数unique2の(ARR){ VARハッシュ= []; 用(VAR i = 0; I <arr.length; iは++){ IF(arr.indexOf(ARR [I])== I){ hash.push(ARR [I])。 } } ハッシュを返します。 }
3.ソート隣接除去方法
アイデアの実現:同じ値が隣接することになる注文後、その後、唯一の新しい配列が以前の値と重ならない追加、並べ替え後の配列を横断し、渡された配列をソートします。
関数unique3(ARR){ arr.sort()。 VARハッシュ= [0] [ARR]。 用(VAR I = 1; I <arr.length; iは++){ IF(ARR [I] =ハッシュ[hash.length-1]!){ hash.push(ARR [I])。 } } ハッシュを返します。 }
4.最適化法(参考)を繰り返します
アイデアの実現:ダブルループは、外側ループは0からarr.lengthを表し、サイクルがarr.lengthにI + 1を表します
新しい配列に正しい値を複製しません。(外側のループは、同じ時間を繰り返したときに、現在のサイクルで検出され、判定の値に終了します)
関数unique4(ARR){ VARハッシュ= []; 用(VAR i = 0; I <arr.length; iは++){ 用(VARのJ = I + 1、J <arr.length; J ++){ IF(ARR [I] === ARR [J]){ + + I; } } hash.push(ARR [I])。 } ハッシュを返します。 }
達成5.ES6
基本的な考え方:ES6は、新しいデータ構造のセットを提供します。これは、配列に類似しているが、メンバーの値は、重複する値が一意ではありません。
パラメータとして配列(または配列のようなオブジェクト)を受け入れることができる設定機能は、初期化するために使用されます。
関数unique5(ARR){ VAR X =新しいセット(ARR)。 戻る[... X]; }
拡張:繰り返される場合は、この要素が削除されます
配列の添字の重複除外
関数unique22(ARR){ VARハッシュ= []; 用(VAR i = 0; I <arr.length; iは++){ IF(arr.indexOf(ARR [I])== arr.lastIndexOf([I])ARR){ hash.push(ARR [I])。 } } ハッシュを返します。 }