【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;
})

 

你可能感兴趣的:(assign(),js函数,js进阶,随机排序)