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

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

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

1、數(shù)組的直接賦值屬于數(shù)組的淺拷貝,JS存儲(chǔ)對(duì)象都是存內(nèi)存地址,所以淺拷貝會(huì)導(dǎo)致新數(shù)組和舊數(shù)組共用同一塊內(nèi)存地址,其中一個(gè)數(shù)組變化,另一個(gè)數(shù)組也會(huì)相應(yīng)的變化。

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

//結(jié)果: [30, 2, 3]   [30, 2, 3]

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

數(shù)組的concat方法

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

//結(jié)果:[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);

//結(jié)果:[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ù)組內(nèi)部含有引用類型,使用slice() 、concat() 和 assign() 方法,非引用類型的值屬于深拷貝,引入類型的值屬于淺拷貝,一個(gè)數(shù)組變化,另一個(gè)也會(huì)相應(yīng)的變化。

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

1、通過JSON.stringify轉(zhuǎn)化成字符串再通過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); 

//輸出結(jié)果如下
(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); 

//輸出結(jié)果如下
(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}

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

相關(guān)文章

最新評(píng)論

西城区| 涟源市| 普兰县| 花莲市| 察雅县| 鄯善县| 太原市| 大田县| 鲁山县| 瑞丽市| 怀化市| 广安市| 衡东县| 盐城市| 龙泉市| 华安县| 铜陵市| 霞浦县| 阿拉善盟| 德清县| 定结县| 普定县| 汕尾市| 阿城市| 定襄县| 璧山县| 镇江市| 永仁县| 北辰区| 青神县| 乐亭县| 长汀县| 台南县| 奉化市| 会理县| 怀安县| 尤溪县| 凤凰县| 望谟县| 兴仁县| 开远市|