填坑-十万个为何?(9)

简介:不少概念不清或忘记,从新构建本身的知识体系。天天问本身1~多个问题。我是菜鸟 成为大神之路!java

学习ES6 以后的学习不少地方都会涉及到 ES6的相关内容。 ES6 linkes6

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的内容。web

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()方法 【对象数组浅拷贝,基本类型数组深拷贝】

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

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

从一个相似数组或可迭代对象中建立一个新的数组实例ide

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

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

思想利用对象属性取值 这里涉及 获取对象的属性(第三天的内容) juejin.im/post/5c1994…post

'看到公司使用的是 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 = []; // 赋值为一个空数组以达到清空原数组 
复制代码
相关文章
相关标签/搜索