當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
javascript 数组以及对象的深拷贝方法
生活随笔
收集整理的這篇文章主要介紹了
javascript 数组以及对象的深拷贝方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
for循環
var arr = [{name: 'jq',old: '20' },{name: 'aa',old: '18' }] var arr2=[] for(let i=0;i<arr.length;i++){arr2.push({...arr[i]}) } arr[0].name='xiaoming' console.log(arr) //[{name: "xiaoming", old: "20"},{name: "aa", old: "18"}] console.log(arr2) //[{name: "jq", old: "20"},{name: "aa", old: "18"}] var obj = {name: 'jq',old: '20' } var obj2 = copyObj(obj) function copyObj(obj) {let res = {}for (var key in obj) {res[key] = obj[key]}return res } obj.name='aa' console.log(obj) //{name: "aa", age: "20"} console.log(obj2)//{name: "jq", age: "20"}arr.concat()返回一個新數組
var arr = [1,2,3,4] var newarr = arr.concat(); arr[1]=5; console.log(arr); //[1,2,3,4] console.log(arr2);//[1,5,3,4]slice 方法 從已有的數組中返回選定的元素。
語法:slice(begin,end) 方法選擇一個從開始到結束(不包括結束)的數組的一部分淺拷貝到一個新的數組對象,方法不會改變原數組。如果是對象則拷貝對象的引用到新數組,如果是基本類型則會拷貝這些值到新數組。
如果省略begin則會從0開始。如果end被省略則會抽取到最后一個元素,如果end數值大于數組長度則會抽取到最后一個元素
var arr = [1,2,3,4] var arr2 = arr.slice() arr[2] = 5 console.log(arr) //[1, 2, 5, 4] console.log(arr2)// [1, 2, 3, 4]轉換成json字符串再轉成json對象
var obj = {name: 'jq',age: '20' } var obj2 = JSON.parse(JSON.stringify(obj)) obj.name='aa' console.log(obj) //{name: "aa", age: "20"} console.log(obj2)//{name: "jq", age: "20"}ES6擴展運算符
var arr = [1,2,3,4] var [ ...arr2 ] = arr arr[2] = 5 console.log(arr) //[1, 2, 5, 4] console.log(arr2)//[1, 2, 3, 4] var obj = {name: 'jq',age: '20' } var {...obj2}=obj; obj.name='aa' console.log(obj) //{name: "aa", age: "20"} console.log(obj2)//{name: "jq", age: "20"}Object.assign()
var obj={name:'jq',age:15} var obj2=Object.assign({},obj) obj.name='aa' console.log(obj) //{name: "aa", age: "15"} console.log(obj2)//{name: "jq", age: "15"}總結
以上是生活随笔為你收集整理的javascript 数组以及对象的深拷贝方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抚州虚拟服务器,南通虚拟主机_南通云虚机
- 下一篇: webpack4.x安装的一些坑