Heim > Backend-Entwicklung > PHP-Problem > Welche 5 Methoden gibt es, Arrays zu deduplizieren?

Welche 5 Methoden gibt es, Arrays zu deduplizieren?

coldplay.xixi
Freigeben: 2023-03-01 13:38:01
Original
4044 Leute haben es durchsucht

Welche 5 Methoden gibt es, Arrays zu deduplizieren?

Welche 5 Methoden gibt es, um Duplikate aus Arrays zu entfernen?

5 Möglichkeiten, Duplikate aus Arrays zu entfernen:

Methode 1:

Double for-Schleife Deduplizierung

Prinzip: Wenn zwei Paare verglichen werden, lösche das zweite

Zum Beispiel: 1 1 1 3 2 1 2 4

Die erste 1 sei arr [0 ] Vergleichen Sie nacheinander die folgenden Werte. Wenn der folgende Wert gleich arr[0] ist, löschen Sie den folgenden Wert

Das Ergebnis nach dem ersten Mal ist 1 3 2 2 4 und löschen Sie alle folgenden 1

In ähnlicher Weise wird beim zweiten und dritten Mal dasselbe Element wie es selbst gelöscht

function noRepeat1(arr){
        // 第一层for用来控制循环的次数
        for(var i=0; i<arr.length; i++){
            //第二层for 用于控制与第一层比较的元素
            for(var j=i+1; j<arr.length; j++){
                //如果相等
                if(arr[i] == arr[j]){
                    //删除后面的 即第 j个位置上的元素  删除个数 1 个
                    arr.splice(j,1);
                    // j--很关键的一步  如果删除 程序就会出错 
                    //j--的原因是 每次使用splice删除元素时 返回的是一个新的数组 
                    // 这意味这数组下次遍历是 比较市跳过了一个元素
                    /*
                        例如: 第一次删除后 返回的是 1 1 3 2 1 2 4
                     *  但是第二次遍历是 j的值为2  arr[2] = 3
                     *  相当于跳过一个元素 因此要 j--
                     * */
                    j--;
 
                }
 
            }
        }
 
        return arr;
    }
Nach dem Login kopieren

Methode 2:

Einschichtige for-Schleife

Prinzip Ähnlich wie Methode eins

function norepeat(arr){
                arr.sort();
                //先排序让大概相同的在一个位置,这里为什么说是大概相同 是因为sort排序是把元素当字符串排序的 它和可能排成 1 1 10 11 2 20 3 ... 不是我们想要的从小到大
                for(var i = 0; i < arr.length-1;i++){
        //还是两两比较 一样删除后面的
                    if(arr[i]==arr[i+1]){
                        arr.splice(i,1);
                        //i-- 和j--同理
                        i--;
                    }
                }
                return arr;
             }
Nach dem Login kopieren

Methode drei:

Prinzip: Verwenden Sie ein leeres Array, um das erste erscheinende Element zu speichern.
Verwenden Sie das indexOf-Attribut indexOf um eine angegebene Position zurückzugeben, an der das Zeichen in der Zeichenfolge erscheint. Wenn nicht, wird -1 zurückgegeben, sodass wir diese Eigenschaft gut nutzen können. Wenn -1 zurückgegeben wird, speichern Sie es im Array

function noRepeat2(arr){
        var newArr = [];
        for(var i = 0; i < arr.length; i++){
            if(newArr.indexOf(arr[i]) == -1){
                        newArr.push(arr[i]);
                }
        }
        return newArr;
        }
Nach dem Login kopieren

Methode 4:

Prinzip: Wenn das Objekt kein solches Attribut enthält, wird es zurückgegeben Prinzip, um es in das Array einzufügen, wenn der zurückgegebene Wert undefiniert ist.

function norepeat3(arr) {
        var obj = {};
        var newArr = [];
        for(var i = 0; i < arr.length; i++) {
            if(obj[arr[i]] == undefined) {
                newArr.push(arr[i]);
                obj[arr[i]] = 1;
            }
        }
        return newArr;
     }
Nach dem Login kopieren

Methode 5:

Prinzip: Wenn der Schleifenvergleich erfolgt gleich, lassen Sie den nachfolgenden Elementwert 0 sein und löschen Sie ihn schließlich bei der Ausgabe auf 0. Die Voraussetzung ist, dass Ihre Daten nicht 0 sein können, aber alles kann flexibel sein. Sie können einen beliebigen Wert festlegen, um diese 0 zu ersetzen. Diese Methode war was Ich dachte damals über eine Implementierung nach, daher war es nicht gut optimiert.

var newArr = [];
    //控制外循环
    for(var i=0; i<arr.length-1;i++){
        //内存循环 只比较后面的
        for(j=i+1;j<arr.length;j++){
            //如果相等就让其值等于0
            if(arr[i]==arr[j]){
                arr[j]=0;
            }
        }
        //去除值为0的
        if(arr[i]==0){
            continue;
        }else{
            //放入新的数组
            newArr.push(arr[i]);
        }
}
Nach dem Login kopieren

Empfohlenes Tutorial: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWelche 5 Methoden gibt es, Arrays zu deduplizieren?. 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