ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript_javascriptスキルで配列から重複した値を削除する方法

JavaScript_javascriptスキルで配列から重複した値を削除する方法

WBOY
リリース: 2016-05-16 18:04:01
オリジナル
907 人が閲覧しました
コードをコピー コードは次のとおりです:

質問: 重複した値を削除する関数を書くように求められました。指定された配列から。
例:
配列 a = [0, 8, 5, 4, 78, 8, 90, 4, 'a', 'b', 'a'] を渡します。
必須の戻り値: [ 0,4,5,8,78,90,a,b]

面接後何度もこの質問について考えましたが、一度も答えが思いつきませんでした。時間の複雑さを軽減する方法。昨日の午後、寮で「JavaScript 言語の本質」を読んでいたところ、何かをトリガーするコードが本の中にあったので、jsfiddle でテストしたところ、成功しました。コードは次のとおりです (完全なバージョンについては jsfiddle を参照してください)
コードをコピー コードは次のとおりです:

var getNR = function (src) {
src = src || [];
var curr = []; ,temp, 名前;
for (i = 0; i temp = src[i];
if (res[temp]) {
//
} else {
res[temp] = 1;
}
}
for (res 内の名前) {
if (res.hasOwnProperty(name)) {
curr[j ] = name ;
}
}
return
};


アイデア 1: を並べ替えます。ターゲット配列を削除し、重複配列を順番に削除します。ただし、これにより重複要素が削除されるだけでなく、配列の元の要素の属性も変更されます。これは明らかに要件 del に準拠していません。
アイデア 2: 新しい配列 b を作成し、a の要素を b にプッシュしますが、プッシュする前に要素が存在するかどうかを確認します。今回の複雑さは n*n で、これは最も単純で愚かな方法です。
アイデア 3: アイデア 2 と似ていますが、js オブジェクトのプロパティを最大限に活用し、新しい空のオブジェクトを作成し、 a の要素を属性としてオブジェクトに追加し、属性を追加する前にその属性が既に存在するかどうかを確認します。 。すべて追加したら、オブジェクトのプロパティを順番に配列に入れ、返します。
Meituan のインタビュー質問には、この質問の変形があります。
Array クラスにメソッドを追加する必要があります。任意の配列メソッドに対してこのメ​​ソッドを呼び出すと、配列から重複した要素が削除されます。
この変形問題では、プロトタイプや理解など、より多くの知識ポイントがテストされます。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート