AngularJs ForEach循环仅在推入新对象时显示最后一个对象

时间:2016-03-01 19:13:43

标签: angularjs foreach

我正在forEach使用loop通过它iterates通过所有对象,但只将最后一个写入log {}的新对象。< / p>

我的Javascript

$http.get('data.json').success(
   function (info) {
      var log = {};
      log.id= info.id;
      log.profile = {};

      angular.forEach(info.profile, function (value, key) {
         console.log(key,value)
         log.profile.inter = value.inter
      }, log);
      console.log(JSON.stringify(log));
   }
);

3 个答案:

答案 0 :(得分:0)

原因是你没有使用数组,你需要将值推入一个数组。

$http.get('data.json').success(
   function (info) {
      var log = {};
      log.id= info.id;
      log.profile = {};
      log.profile.inter = []; //definition of array

      angular.forEach(info.profile, function (value, key) {
         console.log(key,value)
         log.profile.inter.push(value.inter); //add values in array defined behind
      }, log);
      console.log(JSON.stringify(log));
   }
);

还有更多解决方案,但现在将数值放入数组就足够了。

答案 1 :(得分:0)

  

弃用通知

     

已弃用$http遗留承诺方法.success.error。请改用标准.then方法。 1

$http.get('data.json')
     .then(function onFulfilled(response) {
         var info = response.data;
         var log = {};
         log.id= info.id;
         log.profile = {};
         angular.forEach(info.profile, function (value, key) {
             console.log(key,value);
             log.profile[key] = value.inter;
         });
         console.log(JSON.stringify(log));
     }).catch ( function onRejected(response) {
         console.log("ERROR ", response.status;
     });

要将值保存到关联数组,请使用key作为属性访问者。有关详细信息,请参阅MDN JavaScript Reference -- Property Accessors

            log.profile[key] = value.inter;

答案 2 :(得分:0)

         var log = {};
          log.id= info.id;
          log.profile = {};
          log.profile.inter = []; //definition of array

          angular.forEach(info.profile, function (value, key) {
             console.log(key,value)
//needed to add key
             log.profile[key] = {};

          }, log);
          console.log(JSON.stringify(log));
       }