在Angular中创建多维/嵌套对象(嵌套forEach循环)



我需要了解如何在Angular/JS中创建多维对象或数组。这个JSFiddle应该能清楚地解释这个问题:https://jsfiddle.net/s3etbdyj/5/

如何在forEach循环内forEach循环?总结:

我有一些数据很容易在我的应用程序中显示。

"albums":[{
    "album_id": 1,
    "album_title": "Test Release",
    "created_at": "-0001-11-30 00:00:00",
    "updated_at": "-0001-11-30 00:00:00",
    "songs": [{
      "id": 114,
      "title": "Test song",
    }, {
      "id": 115,
      "title": "Test song 2",
    }],
    }, {
    "album_id": 2,
    "album_title": "Blood Sugar Sex Magik",
    "created_at": "-0001-11-30 00:00:00",
    "updated_at": "-0001-11-30 00:00:00",
    "songs": [{
      "id": 116,
      "title": "Give It Away",
    }, {
      "id": 117,
      "title": "Under The Bridge",
    }],
 }]

可以看到,每个"albums"对象可以包含多个"songs"对象。

我需要循环遍历这些数据并重新构建它(这样我就可以添加东西并按照我认为合适的方式格式化它)

如何在此结构中创建嵌套对象数据?以下是目前为止的内容:

$scope.newData = [];
      // create formatted song list
        angular.forEach($scope.origData, function(m) {
                $scope.newData.push({
                  'album_id'  : m.album_id,
                  'album_title'      : m.album_title,
                });
                angular.forEach(m.songs, function(tr) {
                    var obj = {
                        id: tr['id'],
                        title: tr['title'],
                                }
                    $scope.newData.push(obj);
                });
        }, $scope.newData)

但这不起作用。它创建了一个平面结构:

 Object:
  {
    "album_id": 1,
    "album_title": "Test Release",
    "created_at": "-0001-11-30 00:00:00",
    "updated_at": "-0001-11-30 00:00:00",
  }
  Object: 
      {
        "id": 114,
        "title": "Test song",
      }
  Object:
      {
        "id": 115,
        "title": "Test song 2",
        }
  etc... 

看一下JSfiddle: https://jsfiddle.net/s3etbdyj/5/谁能让我的newData看起来就像我的origData,从而解释如何创建嵌套对象?!谢谢。

试试这个:

  $scope.newData = [];
  // create formatted song list
    angular.forEach($scope.origData, function(m) {
            var album = {
              'album_id': m.album_id,
              'album_title': m.album_title,
              'songs': []
            };
            $scope.newData.push(album);
            angular.forEach(m.songs, function(tr) {
                var obj = {
                    id: tr['id'],
                    title: tr['title'],
                };
                album.songs.push(obj);
            });
    }, $scope.newData);

您将所有内容推入$scope。newData,当然是平的。尝试先创建album对象,然后在第二个循环中将歌曲推入其songs数组。例如:

专辑

var ={标题:"不管",歌曲 : [], ...};angular.forEach (m。歌曲,函数(tr){album.songs。push({标题:"不管",…})}美元scope.newData.push(专辑);

对不起,格式不对,我不在手机上的时候会修改的。

相关内容

  • 没有找到相关文章

最新更新