Heim > Web-Frontend > js-Tutorial > Hauptteil

Entfernen Sie doppelte Daten aus dem JS-Array

小云云
Freigeben: 2018-03-13 16:08:19
Original
1550 Leute haben es durchsucht

In JS müssen wir häufig doppelte Daten aus Arrays entfernen. Hier stellen wir vier Algorithmen vor, um die Funktion der Deduplizierung von JS-Arrays zu erreichen.

1. Der schnellste Algorithmus: Objekt-Schlüssel-Wert-Paar-Methode

Implementierungsidee: Erstellen Sie ein neues js-Objekt und ein neues Array und bestimmen Sie beim Durchlaufen des eingehenden Arrays, ob das Der Wert ist ein js-Objektschlüssel. Wenn nicht, fügen Sie den Schlüssel zum Objekt hinzu und fügen Sie ihn in ein neues Array ein.

//注意点: 判断 是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样;例如: a[1]、a["1"] 。解决上述问题还是得调用“indexOf”。
        //速度最快, 占空间最多(空间换时间)
        function unique(array){
            var n = {}, r = [], len = array.length, val, type;
            for (var i = 0; i < array.length; i++) {                val = array[i];                type = typeof val;                if (!n[val]) {
                    n[val] = [type];
                    r.push(val);
                } else if (n[val].indexOf(type) < 0) {
                    n[val].push(type);
                    r.push(val);
                }
            }            return r;
        }
Nach dem Login kopieren
Nach dem Login kopieren

2. Der genialste Algorithmus: optimierte Array-Traversal-Methode

Implementierungsidee: Holen Sie sich den Wert ganz rechts ohne Wiederholung und fügen Sie ihn in ein neues Array ein. (Wenn doppelte Werte erkannt werden, wird die aktuelle Schleife beendet und die nächste Beurteilungsrunde der Schleife der obersten Ebene beginnt)

function unique1(array){
            var r = [];            for(var i = 0, l = array.length; i<l; i++){                for(var j = i + 1; j < l; j++)                    if(array[i] == array[j]) j == ++i;
                r.push(array[i]);
            }            return r;
        }
Nach dem Login kopieren
Nach dem Login kopieren

3. Algorithmus: Methode zum Entfernen benachbarter Elemente nach dem Sortieren

Implementierungsidee: Pass Sortieren Sie das Array so, dass nach dem Sortieren dieselben Werte nebeneinander liegen, und fügen Sie dann beim Durchlaufen nur Werte zum neuen Array hinzu, die keine Duplikate des vorherigen Werts sind.

//将相同的值相邻,然后遍历去除重复值
        function unique2(array){
            array.sort();            var re=[array[0]];            for(var i = 1; i < array.length; i++){                if( array[i] !== re[re.length-1])
                {
                    re.push(array[i]);
                }
            }            return re;
        }
Nach dem Login kopieren

4. Algorithmus: Array-Index-Beurteilungsmethode

Implementierungsidee: Wenn das i-te Element des aktuellen Arrays zuerst an einer anderen Position als i im aktuellen Array erscheint, dann Dies bedeutet, dass das i-te Element Element i wiederholt und ignoriert wird. Andernfalls werden die Ergebnisse der Ergebnisse <入>

function unique3(array){
            var n = [array[0]]; //结果数组
            //从第二项开始遍历
            for(var i = 1; i < array.length; i++) {                //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
                //那么表示第i项是重复的,忽略掉。否则存入结果数组
                if (array.indexOf(array[i]) == i) n.push(array[i]);
            }            return n;
        }
Nach dem Login kopieren
Nach dem Login kopieren

In JS müssen häufig wiederholte Daten im Array entfernt werden. Hier werden die vier Algorithmen vorgestellt die Funktion des JS-Arrays.

1. Der schnellste Algorithmus: Objekt-Schlüssel-Wert-Pairing-Methode

Implementierungsidee: Erstellen Sie ein neues JS-Objekt und ein neues Array und durchlaufen Sie das eingehende Array Bestimmen Sie, ob der Wert der Schlüssel des js-Objekts ist. Wenn nicht, fügen Sie den Schlüssel zum Objekt hinzu und fügen Sie ihn in ein neues Array ein.

//注意点: 判断 是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样;例如: a[1]、a["1"] 。解决上述问题还是得调用“indexOf”。
        //速度最快, 占空间最多(空间换时间)
        function unique(array){
            var n = {}, r = [], len = array.length, val, type;
            for (var i = 0; i < array.length; i++) {                val = array[i];                type = typeof val;                if (!n[val]) {
                    n[val] = [type];
                    r.push(val);
                } else if (n[val].indexOf(type) < 0) {
                    n[val].push(type);
                    r.push(val);
                }
            }            return r;
        }
Nach dem Login kopieren
Nach dem Login kopieren
2. Der genialste Algorithmus: optimierte Array-Traversal-Methode

Implementierungsidee: Holen Sie sich den Wert ganz rechts ohne Wiederholung und fügen Sie ihn in ein neues Array ein. (Wenn doppelte Werte erkannt werden, wird die aktuelle Schleife beendet und die nächste Beurteilungsrunde der Schleife der obersten Ebene beginnt)

function unique1(array){
            var r = [];            for(var i = 0, l = array.length; i<l; i++){                for(var j = i + 1; j < l; j++)                    if(array[i] == array[j]) j == ++i;
                r.push(array[i]);
            }            return r;
        }
Nach dem Login kopieren
Nach dem Login kopieren
3. Algorithmus: Methode zum Entfernen benachbarter Elemente nach dem Sortieren

Implementierungsidee: Pass Sortieren Sie das Array so, dass nach dem Sortieren dieselben Werte benachbart sind, und fügen Sie dann beim Durchlaufen nur Werte zum neuen Array hinzu, die keine Duplikate des vorherigen Werts sind.

//将相同的值相邻,然后遍历去除重复值
        function unique2(array){
            array.sort();            var re=[array[0]];            for(var i = 1; i < array.length; i++){                if( array[i] !== re[re.length-1])
                {
                    re.push(array[i]);
                }
            }            return re;
        }
Nach dem Login kopieren
4. Algorithmus: Array-Index-Beurteilungsmethode

Implementierungsidee: Wenn das i-te Element des aktuellen Arrays zuerst an einer anderen Position als i im aktuellen Array erscheint, dann Dies bedeutet, dass das i-te Element Element i wiederholt und ignoriert wird. Andernfalls speichern Sie das Ergebnisarray

function unique3(array){
            var n = [array[0]]; //结果数组
            //从第二项开始遍历
            for(var i = 1; i < array.length; i++) {                //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
                //那么表示第i项是重复的,忽略掉。否则存入结果数组
                if (array.indexOf(array[i]) == i) n.push(array[i]);
            }            return n;
        }
Nach dem Login kopieren
Nach dem Login kopieren
Verwandte Empfehlungen:

PHP-MySQL-Millionen-Datenentfernung doppelter Daten

Das obige ist der detaillierte Inhalt vonEntfernen Sie doppelte Daten aus dem JS-Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!