suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – tiefes Kopieren und Zuweisen von JS-Objekten

Im Code wird ein Array arr=[1,2,3] erhalten;
Da es sofort zerstört wird, kann es dem Objekt Obj.a nicht direkt zugewiesen werden.
Wie schreibe ich in diesem Fall eine JQuery, damit Obj .a= nachdem arr zerstört wurde? [1,2,3]?

扔个三星炸死你扔个三星炸死你2732 Tage vor959

Antworte allen(4)Ich werde antworten

  • 仅有的幸福

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

    一般情况下很少会在 JS 中遇到“销毁”。然后,我不明白你所谓的立即销毁是指什么?

    如果是指 delete arr,那么直接赋值也不会有问题,如下图:

    如果你是要改变 arr 的内容。那么可以复制一个数组(有几种方法,concat 只是其中一种)

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

    如果确实需要深拷贝,jQuery.fn.clone(),不过貌似有一些限制。

    如果其它数据,自己写深拷贝还是有点难度也比较麻烦,不如用 Lodash 的 cloneDeep()

    Antwort
    0
  • PHP中文网

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

    拷贝数组:

    利用 slice

    obj.a = arr.slice(); 

    利用 JSON

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

    Antwort
    0
  • 巴扎黑

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

    没看懂你销毁的意思。。。。
    至于深拷贝:

    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;
        }
    }

    Antwort
    0
  • 滿天的星座

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

    如果你使用 ES2015 的话,可以使用对象展开运算符来拷贝。

    obj.a = [...arr]

    Antwort
    0
  • StornierenAntwort