【js進階】深淺拷貝,隨機排序,遍歷循環

1. Object.assign() 

官方描述:如果目標對象中的屬性具有相同的鍵,則屬性將被源中的屬性覆蓋。後來的源的屬性將類似地覆蓋早先的屬性。

簡單來說,就是該方法有兩個或或以上個參數,且參數都爲json對象格式,後面的參數裏面的屬性值將覆蓋前面第一個參數的相同屬性的值,如果沒有則新建一個屬性值。且除了原先的對象會更改,還會新建一個對象,屬於淺拷貝。

舉例說明

var player = {score: 1, name: 'Jeff'};

var newPlayer = Object.assign({}, player, {score: 2});

// Now player is unchanged, but newPlayer is {score: 2, name: 'Jeff'}

若需要深拷貝則使用obj1=JSON.parse(JSON.stringify(obj))。 

2. Array.forEach() 

數組的遍歷,比較簡單,不解釋了,寫出來比for簡潔很多

arr.forEach(function (key,index) {
   if (key.value == m) {
      //執行代碼
    }
})

3. Array.fll() 

作用:使用固定值填充數組,嗯,用的比較少,但是不知道的話估計會寫的很僵硬

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.fill("Runoob");
// 輸出 Runoob,Runoob,Runoob,Runoob
4. obj.hasOwnProperty(prop)用於判斷obj中是否含有某個屬性,返回true/false,比用遍歷或者循環要方便很多。但幾乎沒見人用過。
o = new Object();
o.prop = 'exists';

function changeO() {
  o.newprop = o.prop;
  delete o.prop;
}

o.hasOwnProperty('prop');   // 返回 true
changeO();
o.hasOwnProperty('prop');   // 返回 false

5 value.toFixed(n)

保留n位小數,不解釋

 

6 數組的隨機排序

實現想法,對數組做一個遍歷。假設數組內有十個值,每次隨機生成一個十以內的數,然後用數組遍歷的第i項與隨機生成的第n項交換位置


   var arr = [1,2,3,4,5,6,7,8,9,10]; 
   function randSort1(arr){ 
        for(var i = 0,len = arr.length;i < len; i++ ){ 
            var rand = parseInt(Math.random()*len); 
            var temp = arr[rand]; 
            arr[rand] = arr[i]; 
            arr[i] = temp; 
        }        
        return arr;
    }

還有一個數組的方法也能實現 sort

arr.sort(function(){      
      return Math.random() - 0.5;
})

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章