Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阵列及;JSON:Jquery$.each()仅获取最后一个循环_Javascript_Jquery_Arrays_Json - Fatal编程技术网

Javascript 阵列及;JSON:Jquery$.each()仅获取最后一个循环

Javascript 阵列及;JSON:Jquery$.each()仅获取最后一个循环,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,这是我需要做的 我需要创建一个对象数组,如下面的格式。我获取输入框的名称和值,然后放入一个json,然后将其放入一个数组,然后将生成的数组放入另一个数组 [ [ {"key1":"value1","key2":"value2"}, {"key1":"value3","key2":"value4"}, ], [ {"key1":"value1","key2":"value2"}, {"key1":"value1","key2

这是我需要做的

我需要创建一个对象数组,如下面的格式。我获取输入框的名称和值,然后放入一个json,然后将其放入一个数组,然后将生成的数组放入另一个数组

[
    [
      {"key1":"value1","key2":"value2"},
      {"key1":"value3","key2":"value4"},
    ],

    [
      {"key1":"value1","key2":"value2"},
      {"key1":"value1","key2":"value2"},
    ]
]`
下面是我的代码

$scope.saveImages = function(){
    var arrayOfArrays =[];
    var arrayOfPhotos = [];

    angular.element('.photo-group').each(function(){
        var object = {};
            $(this).find('.photo').each(function(){
                var key = $(this).attr('name');
                var value = $(this).val();
                object[key] = value;
            });

            arrayOfPhotos.push(object)
            arrayOfArrays.push(arrayOfPhotos)
            console.log(arrayOfArrays)
    });

}
这是我的标记

<div class="photo-group">
    <div class="photo-group-body">
        <div class="initial-photo">
            <div class="row no-padding new-photo">
                <div class="col no-padding">
                    <div class="form-group no-right-padding">
                        <label class="label-control" class="label-control">Label</label>
                        <input type="text" name="photo_label" class="form-control photo">
                        <input type="text" name="image_data" class="form-control photo photo_data">
                    </div>
                </div>
            </div>
        </div>
        <div class="initial-photo">
            <div class="row no-padding new-photo">
                <div class="col no-padding">
                    <div class="form-group no-right-padding">
                        <label class="label-control" class="label-control">Label</label>
                        <input type="text" name="photo_label" class="form-control photo">
                        <input type="text" name="image_data" class="form-control photo photo_data">
                    </div>
                </div>
            </div>
        </div>
    </div> 
</div>

<div class="photo-group">
    <div class="photo-group-body">
        <div class="initial-photo">
            <div class="row no-padding new-photo">
                <div class="col no-padding">
                    <div class="form-group no-right-padding">
                        <label class="label-control" class="label-control">Label</label>
                        <input type="text" name="photo_label" class="form-control photo">
                        <input type="text" name="image_data" class="form-control photo photo_data">
                    </div>
                </div>
            </div>
        </div>
    </div> 
</div>
但是,我得到的只是每个数组中的最后一个对象

[
   [
     {"photo_label":"value3", "image_data":"value4"},
   ],

   [
     {"photo_label":"value4", "image_data":"value5"},
   ]
]`

在foreach内部创建推送对象

angular.element('.photo-group').each(function(){

            $(this).find('.photo').each(function(){
                var object = {};
                var key = $(this).attr('name');
                var value = $(this).val();
                object[key] = value;
                arrayOfPhotos.push(object);
            });


            arrayOfArrays.push(arrayOfPhotos);
            console.log(arrayOfArrays);
    });

因此,经过数小时的试错测试和跟踪代码流。。我能得到我想要的

这就是我所做的

$scope.saveImages = function(){
    var arrayOfArrays =[];
    angular.element('.photo-group').each(function(){
        var arrayOfPhotos = [];
            $(this).find('.initial-photo').each(function(){
                var object = {};
                    $(this).find('.photo').each(function(){
                        var key = $(this).attr('name');
                        var value = $(this).val();
                        object[key] = value;
                    });
                arrayOfPhotos.push(object)
            });
            arrayOfArrays.push(arrayOfPhotos);
    }); 
}

我添加了另一个循环来深入到子元素中,并放置
var arrayOfPhotos=[]
在循环的第一个实例中

为每个循环放入内部?这个
var arrayOfArrays=[];var arrayOfPhotos=[]如果在循环中使用
arrayOfPhotos.push(object)
会怎么样?我无法运行代码,因此,请尝试。
$scope.saveImages = function(){
    var arrayOfArrays =[];
    angular.element('.photo-group').each(function(){
        var arrayOfPhotos = [];
            $(this).find('.initial-photo').each(function(){
                var object = {};
                    $(this).find('.photo').each(function(){
                        var key = $(this).attr('name');
                        var value = $(this).val();
                        object[key] = value;
                    });
                arrayOfPhotos.push(object)
            });
            arrayOfArrays.push(arrayOfPhotos);
    }); 
}