Я пытаюсь преобразовать массив объектов с помощью javascript. Ниже приведен пример необработанных данных и то, как должен выглядеть форматированный массив. Я попытался выполнить это с помощью некоторых циклов, а если, else, но не смог понять это. Должен быть более эффективный способ выполнения такой задачи с помощью javascript? Я новичок в работе с javascript, поэтому любая помощь очень ценится, спасибо.Преобразование массива объектов в Javascript
Я попытался это ...
// get formatted reports array
$scope.reports = [];
var num = 1;
// console.log("reports: ", $scope.reports_data);
for(var i=0; i<$scope.reports_data.length; i++) {
var row = {
"reviewer_1" : "",
"reviewer_2" : "",
"reviewer_3" : "",
"created_at" : ""
};
if(num == $scope.reports_data[i].report_id) {
row.created_at = $scope.reports_data[i].created_at;
if($scope.reports_data[i].stage == 1) {
row.reviewer_1 = $scope.reports_data[i].full_name;
} else if($scope.reports_data[i].stage == 2) {
row.reviewer_2 = $scope.reports_data[i].full_name;
} else {
row.reviewer_3 = $scope.reports_data[i].full_name;
}
}
$scope.reports.push(row);
num += 1;
}
До:
var raw_arr = [
{
"created_at" :"2016-05-04T16:45:07.000Z",
"full_name" :"Dick",
"report_id" : 1,
"stage" : 1
},
{
"created_at" :"2016-05-04T16:45:07.000Z",
"full_name" :"Tom",
"report_id" : 1,
"stage" : 2
},
{
"created_at" :"2016-05-04T16:45:07.000Z",
"full_name" :"Harry",
"report_id" : 1,
"stage" : 3
},
{
"created_at" :"2016-05-04T16:45:07.000Z",
"full_name" :"John",
"report_id" : 2,
"stage" : 1
},
{
"created_at" :"2016-05-04T16:45:07.000Z",
"full_name" :"Mike",
"report_id" : 2,
"stage" : 2
},
{
"created_at" :"2016-05-04T16:45:07.000Z",
"full_name" :"Charles",
"report_id" : 2,
"stage" : 3
}
];
После:
var formatted_arr = [
{
"created_at": "2016-05-04T16:45:07.000Z",
"report_id": 1,
"reviewer_1": "Dick",
"reviewer_2": "Tom",
"reviewer_3": "Harry",
},
{
"created_at": "2016-05-04T16:45:07.000Z",
"report_id": 2,
"reviewer_1": "John",
"reviewer_2": "Mike",
"reviewer_3": "Charles",
}
];
Итак, вы хотите сгруппировать исходный массив 'report_id' и добавить каждого человека к новому объекту? * «Я пробовал выполнить это с помощью некоторых циклов, а если, else, но не мог понять это». * Так где же этот код? –
И это не «форматирование» массива, это «преобразование» массива в другой массив –
@Matt Burland, который является правильным –