我需要了解如何在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(专辑);
对不起,格式不对,我不在手机上的时候会修改的。