博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
填坑-十万个为什么?(9)
阅读量:6830 次
发布时间:2019-06-26

本文共 2186 字,大约阅读时间需要 7 分钟。

简介:很多概念不清或忘记,重新构建自己的知识体系。每天问自己1~多个问题。我是菜鸟 成为大神之路!

学习ES6 之后的学习很多地方都会涉及到 ES6的相关内容。

1. JavaScript 数组拷贝(复制)有哪些方法以及推荐?

var arrayOne = [{      'id': 13,      'projectName': '我的第一篇文章',      'projectTag': [        '文章'      ],      'privacy': false    },    {      'id': 14,      'projectName': '网址收藏推荐系统',      'projectTag': [        'java,webApp,网址收藏'      ],      'privacy': false    }];var arrayTwo=[];复制代码
①为什么要深拷贝数组?

什么是深拷贝:深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。

我们时常会使用 = 号进行 arrayTwo = arrayOne;这样的赋值特别的在数组作为参数传递时,场景我们希望arrayTwo作为数据的临时存储区,将arrayOnearrayTwo,改变arrayOne的内容。

arrayTwo = arrayOne;arrayOne[1].id = 19999;console.log(arrayOne);console.log(arrayTwo);复制代码

② for循环 【对象数组浅拷贝,基本类型数组深拷贝】
for(let i = 0;i< arrayOne.length; i++){    arrayTwo.push(arrayOne[i]);}arrayOne[1].id = 19999;console.log(arrayOne);console.log(arrayTwo);复制代码

③Array.prototype.slice() 方法 【对象数组浅拷贝,基本类型数组深拷贝】【推荐】

返回一个新的数组对象,这一对象是一个由 begin和 end(不包括end)决定的原数组的浅拷贝。原始数组不会被改变。

arrayTwo = arrayOne.slice(0);arrayOne[1].id = 19999;console.log(arrayOne);console.log(arrayTwo);复制代码

④Array.prototype.concat()方法 【对象数组浅拷贝,基本类型数组深拷贝】

用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。

arrayTwo = arrayOne.concat();arrayOne[1].id = 19999;console.log(arrayOne);console.log(arrayTwo);复制代码
⑤Array.from() 方法 【推荐使用⭐⭐⭐】[补充2019年1月7日 12点45分]资源

从一个类似数组或可迭代对象中创建一个新的数组实例

var arr1 = [1,2,6,4];var arr = Array.from(arr1); // [1,2,6,4]复制代码
...ES6 -Rest方法【推荐使用⭐⭐⭐⭐】[充2019年1月7日 12点45分]资源
let arr1 = [1,2,6,4];let arr = [...arr1]; // [1,2,6,4]复制代码

2. JavaScript 对象拷贝(复制)有哪些方法以及推荐?

思想利用对象属性取值 这里涉及 获取对象的属性(第三天的内容)

'看到公司使用的是 for-in'var objOne = {      'id': 13,      'projectName': '我的第一篇文章',      'projectTag': [        '文章'      ],      'privacy': false    };var objTwo = {};for(var pro in objOne){    objTwo[pro] = objOne[pro];}console.log(objOne);console.log(objTwo);复制代码

3. 清空数组的方法及推荐?

①Array.prototype.slice() 方法【推荐⭐⭐
var array = [1,2,3,4]; array.splice(0,array.length); console.log(array); // 输出 [],空数组,即被清空了复制代码
②length赋值为0【推荐⭐⭐⭐】
var array = [1,2,3,4]; array.length = 0; console.log(array); // 输出 [],空数组,即被清空了复制代码
③赋值为[] 【推荐⭐⭐⭐⭐】
var array = [1,2,3,4]; array = []; // 赋值为一个空数组以达到清空原数组 复制代码

转载于:https://juejin.im/post/5c2190e3f265da614933a934

你可能感兴趣的文章
用innotop监测mysql
查看>>
axure rp 7.0软件汉化翻译(不断更新中)
查看>>
Mysql用户授权管理
查看>>
ORA-25153: 临时表空间为空
查看>>
Codeforces Round #FF
查看>>
Windows Server2012R2 安装 SharePoint 2013 的必备组件
查看>>
Gitweb 配置
查看>>
监控MySQL主从同步状态
查看>>
PHP+MySql+jQuery实现的“顶”和“踩”投票功能
查看>>
awk的基本用法
查看>>
编程是痛并快乐著
查看>>
SERVER5
查看>>
[20171110]_allow_read_only_corruption参数.txt
查看>>
解决xlsxwriter的format覆盖问题
查看>>
Maximo 7.5 集成方式 去掉主菜单
查看>>
BZOJ1922:[SDOI2010]大陆争霸(最短路)
查看>>
你真的会编程吗?你具有“编程视野”吗?
查看>>
openSUSE13.1无法打开Yast的安装/移除软件管理软件的解决办法·(未解决,临时方法) 收获:有问题,读日志...
查看>>
arcengine动态显示所需字段值
查看>>
String为什么不可变
查看>>