Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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
Angularjs 如何合并JSON数据中的两个不同对象_Angularjs_Arrays_Json_Concatenation - Fatal编程技术网

Angularjs 如何合并JSON数据中的两个不同对象

Angularjs 如何合并JSON数据中的两个不同对象,angularjs,arrays,json,concatenation,Angularjs,Arrays,Json,Concatenation,嗨,我需要一些关于这个代码片段的帮助。我得到的输出是JSON数据的多个不同对象。但是我想提取目标数据,然后将它们合并为一个数组。但是我得到的所有数据只是一个数据合并为一个数组,一个接一个。 以下是输出: $scope.findHospital=function(){ $ionicLoading.show({ 模板:'正在获取位置!' }); var posOptions={ EnableHighAccurance:正确, 超时:20000, 最大值:0 }; $cordovaGeolocatio

嗨,我需要一些关于这个代码片段的帮助。我得到的输出是JSON数据的多个不同对象。但是我想提取目标数据,然后将它们合并为一个数组。但是我得到的所有数据只是一个数据合并为一个数组,一个接一个。 以下是输出:

$scope.findHospital=function(){
$ionicLoading.show({
模板:'
正在获取位置!' }); var posOptions={ EnableHighAccurance:正确, 超时:20000, 最大值:0 }; $cordovaGeolocation.getCurrentPosition(posOptions)。然后(函数(position){ var lat=位置坐标纬度; var long=位置坐标经度; var信息窗口; var mylatng=new google.maps.LatLng(lat,long); 变量映射选项={ 中心:myLatlng, 缩放:16, mapTypeId:google.maps.mapTypeId.ROADMAP }; var map=new google.maps.map(document.getElementById(“map”)、mapOptions); infowindow=new google.maps.infowindow(); var service=newgoogle.maps.places.PlacesService(地图); 服务,近距离搜索({ 地点:myLatlng, 半径:5000, 类型:[“警察”] },回调); 函数回调(结果、状态){ if(status==google.maps.places.PlacesServiceStatus.OK){ 对于(var i=0;i

代码已更新!

这是您所需要的!!在函数createMarker之外的数组。当您调用$http.get时,您应该将响应与距离数组连接起来

var distances = []; // HERE

function createMarker(place) {
    geocoder = new google.maps.Geocoder();

    var latlng = new google.maps.LatLng(lat, long);
    geocoder.geocode({'latLng': latlng}, function(results, status) {
        var placeLoc = place.geometry.location;
        var marker = new google.maps.Marker({
          map: map,
          position: place.geometry.location
        });
        var request = { reference: place.reference };

        service.getDetails(request, function(details, status) {

            var url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins="+results[0].formatted_address+"&destinations="+details.formatted_address+"&key=AIzaSyDDxMGpu5SP5XwZGrKw5BQWl_r2dgLgpPY";

            $http.get(url).then(function(response){
                var str = response.data.rows[0].elements[0].distance.text;

                distances = distances.concat(str); // HERE
            });
        }
    });
}

这就是你所需要的!!在你的函数
createMarker
之外的数组。当你调用
$http.get
时,你应该将响应与你的
数组连接起来

var distances = []; // HERE

function createMarker(place) {
    geocoder = new google.maps.Geocoder();

    var latlng = new google.maps.LatLng(lat, long);
    geocoder.geocode({'latLng': latlng}, function(results, status) {
        var placeLoc = place.geometry.location;
        var marker = new google.maps.Marker({
          map: map,
          position: place.geometry.location
        });
        var request = { reference: place.reference };

        service.getDetails(request, function(details, status) {

            var url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins="+results[0].formatted_address+"&destinations="+details.formatted_address+"&key=AIzaSyDDxMGpu5SP5XwZGrKw5BQWl_r2dgLgpPY";

            $http.get(url).then(function(response){
                var str = response.data.rows[0].elements[0].distance.text;

                distances = distances.concat(str); // HERE
            });
        }
    });
}

我强烈怀疑,
distance
数组每次调用
createMarker
方法时都在初始化。因此,请将您的
distance
放在全局范围内。即,就在您的解析
getCurrentPosition
承诺之上

var distances = [];
$cordovaGeolocation.getCurrentPosition(posOptions).then(function (position) {
// your code

并从内部代码中删除距离初始化。

我强烈怀疑,
距离
数组每次调用
createMarker
方法时都在初始化。因此,请将您的
距离
放在全局范围内。也就是说,就在您的解析
getCurrentPosition
承诺之上

var distances = [];
$cordovaGeolocation.getCurrentPosition(posOptions).then(function (position) {
// your code


并从内部代码中删除距离初始化。

你能用angular.forEach循环数组并将每个项目推到数组中吗?呃,我该怎么做?你能给我举个例子吗?@MarkS。在我添加angular.forEach后,它仍然是一样的,它只逐个循环一个数据,而不是所有的数据都在一起。每次我添加时,距离都在初始化我怀疑,你在某个循环中有上面的代码。但是我没有声明任何循环,我只是调用url,json数据会一个接一个地返回数据并初始化每次。你可以使用angular.forEach循环数组并将每个项推到数组上?呃,我该怎么做?你能给我举个例子吗?@MarkS。在我添加angular.forEach之后仍然是同样的,它只是一个接一个地循环一个数据,并不是所有的数据都在一起。距离每次都在初始化,正如我所怀疑的,上面的代码在某个循环中。但是我没有声明任何循环,我只是调用url,json数据一个接一个地返回数据并初始化每个数据。Hi kevin仍然是一样的,仍然返回相同的输出。你能再显示一点吗在你的代码片段中,我只看到一个对
$http.get
的调用。很抱歉,我需要你的代码的更多信息。但是,基本上,你需要在函数外部声明
距离
数组,其中是实际代码。我在函数外部声明它返回空。我kevin仍然是相同的,仍然是返回相同的输出你会显示更多的代码吗?在你的代码片段中,我只看到一个对
$http.get
的调用。很抱歉,我需要你的代码的更多信息。但是,基本上,你需要在函数外部声明
距离
数组,实际代码在哪里。我在外部声明它返回emptyNice它已经成功了,非常感谢你是炸弹手,它已经成功了,非常感谢你是炸弹手