1. 程式人生 > >javascript物件陣列共享例項的有趣用法

javascript物件陣列共享例項的有趣用法

在開發中,碰到利用javacript物件陣列共享例項,來實現修改該陣列中物件屬性。示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<script>
    function addCount(arr){
        if(arr.length == 0){
            return;
        }else{
            var obj = arr.shift();
            obj.count = obj.count + 10;
            addCount(arr); 
        } 	
    } 
   
    var arr1 = [];
    for(i = 0; i < 3; i++){
        var obj = {
            name: "name" + i,
            count: i
        }
        arr1.push(obj); 		
    }
    var arr2 = [];
    for(i = 0; i < 2; i++){
        var obj = {
            name: "name" + i,
            count: i
        }
        arr2.push(obj); 		
    }
    var arr3 = [];
    for(i = 0; i < 1; i++){
        var obj = {
            name: "name" + i,
            count: i
        }
        arr3.push(obj); 		
    } 
    var arr = [].concat(arr1, arr2, arr3);
    addCount(arr);
   
    console.log(arr1);
    console.log(arr2);
    console.log(arr3);    
</script>
</body>
</html>

本例中,三個陣列的物件結構是一樣的。因為某些原因,這三個陣列中的物件屬性都需要做修改,於是使用concat將這三個陣列先拼接起來,然後用到了一個遞迴函式來代替迴圈來做屬性的修改。當遞迴函式對拼接陣列做了修改,原來的arr1,arr2,  arr3中的物件也被相應的修改了。實際應用要比這個示例更為複雜。