最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js數(shù)組直接賦值的問題(js數(shù)組的淺拷貝與深拷貝方法)

 更新時間:2022年10月15日 09:02:56   作者:子夜_秋  
JS數(shù)組在直接賦值時屬于數(shù)組的淺拷貝,新數(shù)組保存的是原數(shù)據的內存地址,修改新數(shù)組或原數(shù)組其中一個數(shù)組,另一個數(shù)組也會相應的變化,數(shù)組的直接賦值屬于數(shù)組的淺拷貝,JS存儲對象都是存內存地址

1、數(shù)組的直接賦值屬于數(shù)組的淺拷貝,JS存儲對象都是存內存地址,所以淺拷貝會導致新數(shù)組和舊數(shù)組共用同一塊內存地址,其中一個數(shù)組變化,另一個數(shù)組也會相應的變化。

var a =[1,2,3];
var b=a;
a[0]=30;
console.log(a,b);

//結果: [30, 2, 3]   [30, 2, 3]

2、數(shù)組內部不含有引用類型,使用slice() 、concat() 和 assign() 方法都屬于數(shù)組的深拷貝,一個數(shù)組變化,另一個數(shù)組不受影響。

數(shù)組的concat方法

var a=[1,2,3];
var b=[].concat(a); 
a[0]=30;
console.log(a,b);

//結果:[30, 2, 3]  [1, 2, 3]

使用es6的展開操作符: …arr

var a=[1,2,3];
var b=[].concat(a); 
var c=[...a]; 
a[0]=30;
console.log(a,b,c);

//結果:[30, 2, 3]  [1, 2, 3] [1, 2, 3]

利用split join map方法

let arr1=[1,2,3];
var newArr4 = arr1.join(" ").split(" ").map(function(i){
    return parseInt(i);
    
}); 
arr1[0]=30;
console.log(arr1,newArr4);

//VM1175:1 (3) [30, 2, 3] (3) [1, 2, 3]

3、數(shù)組內部含有引用類型,使用slice() 、concat() 和 assign() 方法,非引用類型的值屬于深拷貝,引入類型的值屬于淺拷貝,一個數(shù)組變化,另一個也會相應的變化。

4、深拷貝就是指完全的拷貝一個對象,即使嵌套了對象,兩者也相互分離,修改一個對象的屬性,也不會影響另一個。

1、通過JSON.stringify轉化成字符串再通過JSON.parse()解析成原數(shù)組。

let arr=[{a:1,b:2},{a:3,b:4}]; 
let arr1=JSON.parse(JSON.stringify(arr)); 
arr[0].a=10;
console.log(arr,arr1); 

//輸出結果如下
(2)?[{…}, {…}]
    0: {a: 10, b: 2}
    1: {a: 3, b: 4}

(2)?[{…}, {…}]
    0: {a: 1, b: 2}
    1: {a: 3, b: 4}

2、利用jQuery的$.extend方法。

let arr=[{a:1,b:2},{a:3,b:4}]; 
let arr1=$.extend(true,[],arr); 
arr[0].a=10;
console.log(arr,arr1); 

//輸出結果如下
(2) [{…}, {…}]
    0: {a: 10, b: 2}
    1: {a: 3, b: 4}
    
(2) [{…}, {…}, contains: ?, each: ?, uniquelize: ?]
    0: {a: 1, b: 2}
    1: {a: 3, b: 4}

更多關于js數(shù)組直接賦值的問題和js數(shù)組的淺拷貝,深拷貝方法請查看下面的相關文章

相關文章

最新評論

翼城县| 洱源县| 如东县| 永兴县| 邵阳市| 万荣县| 延长县| 本溪市| 台南市| 桐柏县| 商南县| 齐齐哈尔市| 安阳县| 富川| 东莞市| 贡山| 苍山县| 富源县| 子长县| 遂昌县| 鲁山县| 河曲县| 绿春县| 德江县| 芒康县| 砀山县| 安宁市| 甘泉县| 新建县| 锡林郭勒盟| 丰台区| 屏东县| 日土县| 辽中县| 深水埗区| 五常市| 文水县| 光山县| 云林县| 台东市| 通化市|