【发布时间】:2017-02-07 17:38:23
【问题描述】:
我需要了解如何在 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,从而解释嵌套对象是如何创建的?! 谢谢。
【问题讨论】:
-
所以。你应该把歌曲推到哪里?目前,您正在将它们推送到您推送专辑的同一级别。
-
我想在每张专辑中将它们推送到一个名为“歌曲”的对象中。但我无法正确使用语法!
标签: javascript angularjs arrays multidimensional-array foreach