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中的对象也被相应的修改了。实际应用要比这个示例更为复杂。

猜你喜欢

转载自blog.csdn.net/Quincylk/article/details/85103418