У меня есть следующие структуры объекта,Сделать карту/массив из JSON
{
carMaker: {
Id: '01',
Name: 'Audi',
Headquarter: 'Germany'
},
modelName: 'R8',
Id: '1',
CarMaker: 'Audi',
color: 'black'
}
В основном, это список автомобилей, которые ссылаются его Автоконцерн по имени. И детали CarMaker также вложены внутри json с ключом CarMaker.
Я хочу, чтобы заполнить структуру JSON, имеющую список CarMaker, с автомобилями, созданными ими в массиве под клавишей carsList.
Может ли кто-нибудь предложить эффективный способ сделать это, без использования двух циклов, которые были бы легким выходом и повлияли бы на производительность для больших значений.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="../content/vendor_js/AngularJS/angular.js"></script>
<script>
var testmodule = angular.module('testmodule', []);
testmodule.controller('testcontroller', ['$scope', function ($scope) {
$scope.carList = [
{
carMaker: {
Id: '01',
Name: 'Audi',
Headquarter: 'Germany'
},
modelName: 'R8',
Id: '1',
CarMaker: 'Audi',
color: 'black'
}, {
carMaker: {
Id: '01',
Name: 'Audi',
Headquarter: 'Germany'
},
modelName: 'A7',
Id: '2',
CarMaker: 'Audi',
color: 'red'
}, {
carMaker: {
Id: '02',
Name: 'Nissan',
Headquarter: 'Japan'
},
modelName: 'GTR',
Id: '4',
CarMaker: 'Nissan',
color: 'yellow'
}, {
carMaker: {
Id: '03',
Name: 'Volkswagen',
Headquarter: 'Germany'
},
modelName: 'Polo',
Id: '5',
CarMaker: 'Volkswagen',
color: 'black'
}
];
$scope.carMakerList = {};
$scope.createJSONArray = function() {
angular.forEach($scope.carList, function (car) {
$scope.carMakerList[car.carMaker.Name] = car.carMaker;
});
angular.forEach($scope.carMakerList, function (carMaker) {
carMaker.cars = [];
});
angular.forEach($scope.carList, function (car) {
$scope.carMakerList[car.CarMaker]["cars"].push(car);
});
};
$scope.createJSONArray();
}]);
</script>
</head>
<body ng-app="testmodule" ng-controller="testcontroller">
<table border="1">
<tr ng-repeat="carmaker in carMakerList">
<td><p ng-bind="carmaker.Id"></p></td>
<td><p ng-bind="carmaker.Name"></p></td>
<td>
<ul>
<li ng-repeat="cars in carmaker.cars">
<p ng-bind="cars.modelName"></p>
</li>
</ul>
</td>
</tr>
<tr>
<h3></h3>
</tr>
</table>
</body>
</html>
добавьте разыскиваемую структуру и код, который вы пробовали. –
Вы не пытались решить эту проблему самостоятельно. – piRSquared
сделайте действительную структуру объекта только с одним свойством 'CarMaker'. –