我需要了解如何在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",
}],
}]
如您所见,每个“专辑”对象中都可以包含多个“歌曲”对象。
我需要循环遍历这些数据并重建它(这样我就可以根据需要添加内容并进行格式化)
如何在此结构中创建嵌套对象数据?这是我到目前为止所做的:
$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,从而解释如何创建嵌套对象?! 谢谢。
答案 0 :(得分:2)
试试这个:
$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);
答案 1 :(得分:1)
你把所有东西都推到了$ scope.newData,当然它是平的。首先尝试创建相册对象,然后在第二个循环中将歌曲推入其歌曲数组中。类似的东西:
var album = {title:“whatever”,歌曲:[],...}; angular.forEach(m.songs,function(tr){album.songs.push({title:“whatever”,...}) } $ scope.newData.push(专辑);
很抱歉,当我不在手机上时,我会修复它的格式。