填坑-十萬個爲何?(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 = []; // 賦值爲一個空數組以達到清空原數組 
複製代碼
相關文章
相關標籤/搜索