Maison  >  Questions et réponses  >  le corps du texte

javascript - copie approfondie et affectation de l'objet js

Dans le code, un tableau arr=[1,2,3] est obtenu ;
Comme il sera détruit immédiatement, il ne peut pas être directement affecté à l'objet Obj.a.
Comment écrire jquery dans ce cas pour que Obj .a= après la destruction de l'arr ? [1,2,3] ?

扔个三星炸死你扔个三星炸死你2638 Il y a quelques jours896

répondre à tous(4)je répondrai

  • 仅有的幸福

    仅有的幸福2017-07-05 11:06:38

    En général, il est rare de rencontrer "destroy" en JS. Alors, je ne comprends pas ce que tu entends par destruction immédiate ?

    S'il s'agit de delete arr, alors il n'y a aucun problème avec l'affectation directe, comme indiqué ci-dessous :

    Si tu veux changer arr 的内容。那么可以复制一个数组(有几种方法,concat Ce n'est qu'un d'entre eux)

    Obj.a = [].concat(arr);

    Si vous avez vraiment besoin d'une copie complète, jQuery.fn.clone(), mais cela semble avoir certaines restrictions.

    Pour les autres données, il est encore un peu difficile et gênant d'écrire soi-même une copie complète. Il est préférable d'utiliser le cloneDeep() de Lodash

    .

    répondre
    0
  • PHP中文网

    PHP中文网2017-07-05 11:06:38

    Copier le tableau :

    Utilisez des tranches

    obj.a = arr.slice(); 

    Utiliser JSON

    obj.a = JSON.parse(
        JSON.stringify(arr)
    ); 

    répondre
    0
  • 巴扎黑

    巴扎黑2017-07-05 11:06:38

    Je ne comprends pas ce que tu veux dire par le détruire. . . .
    Quant à la copie profonde :

    function cloneObj(obj){
        if( !obj || typeof obj == "string" ){
            return obj;
        } else if ( obj instanceof Array ){
            return [].concat(obj);
        } else {
            var tempObj = {};
            for( var key in obj ){
                tempObj[key] = cloneObj(obj[key]);
            }
            return tempObj;
        }
    }

    répondre
    0
  • 滿天的星座

    滿天的星座2017-07-05 11:06:38

    Si vous utilisez ES2015, vous pouvez utiliser l'opérateur de propagation d'objet pour copier.

    obj.a = [...arr]

    répondre
    0
  • Annulerrépondre