Maison > interface Web > js tutoriel > le corps du texte

Résolvez le problème selon lequel le tri des tableaux en JavaScript ne change pas

hzc
Libérer: 2020-06-15 09:28:16
avant
3410 Les gens l'ont consulté

Résolvez le problème selon lequel le tri des tableaux en JavaScript ne change pas

Je travaillais récemment sur un projet après qu'Ajax ait renvoyé des données en arrière-plan, lorsque le front-end était traité avec js, j'ai découvert que peu importe comment. sort a été utilisé, il n'y aurait aucun changement à la fin.Ou changer seulement le dernier tri.Après avoir longtemps lutté, j'ai finalement vérifié les informations et découvert qu'il y avait une distinction entre la copie superficielle et la copie profonde dans js.

    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]);
    }
}
Copier après la connexion

Copie superficielle, copie approfondie et affectation

La différence entre ces trois réside dans la manière de modifier les données, par souci de simplicité. Clairement , utilisez un tableau pour comprendre le plus rapidement :

< /tr>< tr>

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

Qu'il pointe vers le même objet

La première couche est le type de données de base

Les données d'origine contiennent des sous-objets

DevoirOuimodifiera les données d'origine ensembleentraînera une modification simultanée des données d'origine
Copie superficielleNon Les données originales ne seront pas modifiéesmodifiera les données d'origine
Copie complèteOuine modifiera pas les données d'origine Les données originales ne seront pas modifiées en même temps

Solution

Maintenant que vous connaissez le principe, voici L'exigence nécessite toutes les modifications, nous pouvons donc utiliser la méthode extend dans JQuery pour la gérer :

    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);
Copier après la connexion
Syntaxe : $.extend( target, [object1], [objectN] ) où target est le type de cible, ici I Le tableau [] est utilisé, et il peut également être {}, qui peut être traité en fonction de la situation réelle. À partir des [object1], [objectN] suivants, nous pouvons savoir que extend peut fusionner plusieurs objets à traiter en un objet du type cible. Tutoriel recommandé : "Tutoriel JS"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:juejin.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!