Heim > Web-Frontend > js-Tutorial > Hauptteil

Lösen Sie das Problem, dass sich die Array-Sortierung in JavaScript nicht ändert

hzc
Freigeben: 2020-06-15 09:28:16
nach vorne
3445 Leute haben es durchsucht

Lösen Sie das Problem, dass sich die Array-Sortierung in JavaScript nicht ändert

Ich habe kürzlich an einem Projekt gearbeitet, nachdem Ajax Daten aus dem Hintergrund zurückgegeben hatte, als das Frontend mit js verarbeitet wurde Wenn sort verwendet wurde, änderte sich am Ende nichts, oder ich änderte nur die letzte Sortierung. Nachdem ich lange gekämpft hatte, stellte ich schließlich fest, dass es in js einen Unterschied zwischen flacher Kopie und tiefer Kopie gibt.

    var provinceConfirmedCount = data;
    var provinceDeadCount = data;
    var provinceCuredCount = data;

    provinceConfirmedCount.sort(sortBy(("provinceConfirmedCount")));
    provinceDeadCount.sort(sortBy(("provinceDeadCount")));
    provinceCuredCount.sort(sortBy(("provinceCuredCount")));

    console.log(provinceConfirmedCount); //不生效
    console.log(provinceDeadCount); //不生效
    console.log(provinceCuredCount); //生效

//比较数组对象
function sortBy(field) {
    return function(a,b) {
        return parseInt(b[field]) - parseInt(a[field]);
    }
}
Nach dem Login kopieren

Flache Kopie, tiefe Kopie und Zuweisung

Der Unterschied zwischen diesen drei besteht der Einfachheit halber darin, wie die Daten geändert werden. Klar Verwenden Sie eine Tabelle, um am schnellsten zu verstehen:

< /tr>< tr>

是否指向同一对象第一层为基本数据类型原数据中包含子对象
赋值会使原数据一同改变会使原数据一同改变
浅拷贝不会使原数据一同改变会使原数据一同改变
深拷贝不会使原数据一同改变不会使原数据一同改变

Ob es auf dasselbe Objekt zeigt

Die erste Ebene ist der Basisdatentyp

Die Originaldaten enthalten Unterobjekte

ZuweisungJaändert die Originaldaten gemeinsam führt dazu, dass sich die Originaldaten gemeinsam ändern
Flache KopieNein Die Originaldaten werden nicht geändertändert die Originaldaten
Deep copyJaändert die Originaldaten nicht Die Originaldaten werden nicht gleichzeitig geändert

Lösung

Nachdem Sie nun das Prinzip kennen, sehen Sie hier: Die Anforderung erfordert alle Änderungen, sodass wir die Extend-Methode in JQuery verwenden können, um damit umzugehen:

    var provinceConfirmedCount = $.extend([], data);
    var provinceDeadCount = $.extend([], data);;
    var provinceCuredCount = $.extend([], data);;

    provinceConfirmedCount.sort(sortBy(("provinceConfirmedCount")));
    provinceDeadCount.sort(sortBy(("provinceDeadCount")));
    provinceCuredCount.sort(sortBy(("provinceCuredCount")));

    console.log(provinceConfirmedCount);
    console.log(provinceDeadCount);
    console.log(provinceCuredCount);
Nach dem Login kopieren
Syntax: $.extend( target, [object1], [objectN] ) Wobei Ziel der Zieltyp ist, hier I Das Array [] wird verwendet, und es kann auch {} sein, was entsprechend der tatsächlichen Situation verarbeitet werden kann. Aus dem folgenden [object1], [objectN] können wir erkennen, dass „extend“ mehrere zu verarbeitende Objekte zu einem Objekt des Zieltyps zusammenführen kann. Empfohlenes Tutorial: „JS-Tutorial“

Das obige ist der detaillierte Inhalt vonLösen Sie das Problem, dass sich die Array-Sortierung in JavaScript nicht ändert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.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