2016-02-25 35 views
0

我想将两个jsons合并为一个,但无法使其工作。我设法从两者中获取我需要的数据,但是我有麻烦操纵jsons。

我计划使用两个for循环,但它不工作:

$scope.coursesJson = $http.get('https://api.myjson.com/bins/18zi3'); 
    $scope.reviewsJson = $http.get('https://api.myjson.com/bins/52toz'); 

    $q.all([$scope.coursesJson, $scope.reviewsJson]).then(function (values){ 
     $scope.coursesJson = values[0]; 
     $scope.reviewsJson = values[1]; 

      for(i = 0;i<$scope.coursesJson.length;i++){ 
       for(j = 0;j<$scope.reviewsJson.length;j++){ 
        if($scope.coursesJson[i].name = $scope.reviewsJson[j].name){ 
         $scope.coursesJson[i].reviews.push($scope.reviewsJson[j]); 
        } 
       } 
      } 

      console.log($scope.coursesJson); 
     }); 

使用控制台,我可以可视化的数据,但$ scope.coursesJson.length是不确定的,我不明白为什么。

也许我不明白$ q好吗?

编辑:

这里是)元素的例子,你可以找到在coursesJson文件我得到(:

[{"code":"123 ","name":"Acteurs","courseContentGrade":null,"courseTeachingGrade":null,"courseAverage":null,"reviews":null}, 
    {"code":"1234","name":"Advanced Excel","courseContentGrade":null,"courseTeachingGrade":null,"courseAverage":null,"reviews":null}] 

而且元素的例子,你可以找到在reviewsJson文件I get():

[{"code":"123 ","name":"Acteurs","professor":"Lalala","contentReview":"C'est très réussi.","teachingReview":"charismatique","contentGrade":8,"teachingGrade":8,"average":8,"trimester":"T2","day":"Jeudi/Thursday","time":"9h-12h","round":"1er tour","bet":21,"year":"2014/2015","upvotes":"0","author":"Piranha","passed":null}, 
    {"code":"123 ","name":"Acteurs","professor":"LAlalalala","contentReview":"Très intéressant !","teachingReview":"Disponible, claire.","contentGrade":8,"teachingGrade":8,"average":8,"trimester":"T2","day":"Jeudi/Thursday","time":"9h-12h","round":"1er tour","bet":25,"year":"2014/2015","upvotes":"0","author":"Piranha","passed":null}] 

我想将reviewsJson中的元素添加到coursesJson元素的评论字段中。这可能是问题吗?我认为使用push()方法会创建数组,但也许我需要将所有“评论”:null改为“reviews”:[]在coursesJson中?

+0

你可以发布jsons,我想能够看到什么是数组什么是对象等 – jstuartmilne

+0

你似乎是令人困惑的事情,'$ scope.coursesJson'是一个数组,但你试图访问属性'name'直接关闭它。不应该是'$ scope.coursesJson [i] .name'?另外,如果你正确地设置你的头文件,'content-type'和'acceptable' angular会为你解析响应。最后你用多个不同的值覆盖'coursesJson',首先有承诺,然后是数组。你应该避免这种做法。 – ste2425

+0

'values'是'$ http'创建的promise对象的数组。不需要使用'fromJson()'。 – charlietfl

回答

0

我很容易解决了我的问题,我的问题其实很愚蠢。

我试图实现的东西在前端没有位置,但在后端。

0

我去了url https://api.myjson.com/bins/ID1它不是一个数组,而是一个对象。而不是$ scope.coursesJson.length我认为你应该做$ scope.coursesJson.tracks.length

+0

嗨,url/ID1不是我正在使用的实际URL,我使用ID1来区分这两个URL。我将在我的开篇文章中添加一个jsons的例子 – Puck7