Итерируйте через вложенный массив json в контроллере angular и получите уникальные значения
Мне нужно выполнить итерацию через вложенный массив json, который выглядит как
[
{
"title": "EPAM",
"technologies": [
"PHP",
".net",
"Java",
"Mobile",
"Objective-C",
"Python",
"Ruby"
],
"location": "Belarus",
"city": "Minsk"
},
{
"title": "Parallels",
"technologies": [
"PHP",
"Java",
"C++",
"iOS Development",
"C#",
"Ember.js"
],
"location": "Russia",
"city": "Moscow"
}
]
Я хочу, чтобы перебирать список технологий в каждой компании, а затем возвращать список уникальных значений. Однако мне не удалось получить доступ к одной компании в составе массива компании в контроллере. Похоже, это пока что
var app = angular.module('app', []);
app.controller('CompaniesController', ['$scope', '$http',
function($scope, $http) {
$http.get('json/companies.json').success(function(data) {
$scope.companies = data; // get data from json
$scope.techStack = []
$scope.companies = data.query(function(companies) {
console.log(companies); //I expected to see data here
});
});
}
]);
Видимо, я делаю что-то неправильно.
Ответы
Ответ 1
Используйте angular для каждого:
var app = angular.module('app', []);
app.controller('CompaniesController', ['$scope', '$http',
function($scope, $http) {
$http.get('json/companies.json').success(function(data) {
$scope.companies = data; // get data from json
angular.forEach($scope.companies, function(item){
console.log(item.technologies);
})
});
});
}
]);
Ответ 2
Если вам нужно отображать только вложенный массив в пользовательском интерфейсе, вы можете сделать это прямо
например.
<tr ng-repeat="i in Items">
<td valign="top">{{i.Value}}</td>
<td valign="top">
<table>
<tr ng-repeat="c in i.Children">
<td>{{c.Value}}</td>
</tr>
</table>
</td>
</tr>
Ответ 3
Чтобы перебрать массив в AngularJS, вы можете просто использовать angular.forEach. Например,
angular.forEach(companiesList, function(company) {
//Here you can access each company.
});
Я сделал простую демонстрацию на основе вашего кода, в котором перечислены "Компании" и уникальные "Технологии".
DEMO
Ответ 4
попробуйте это
var app = angular.module('app', []);
app.controller('CompaniesController', ['$scope', '$http',
function($scope, $http) {
$http.get('json/companies.json').success(function(data) {
$scope.companies = data; // get data from json
$scope.techStack = []
angular.forEach($scope.companies, function(item){
$scope.techStack = item.technologies;
var uniqueTech = [];
for (var i = 0; i < $scope.techStack.length; i++)
{
if (uniqueTech.indexOf($scope.techStack[i]) == -1)
uniqueTech.push($scope.techStack[i]);
}
console.log("Unique Technologies : " + uniqueTech);
})
});
}
]);
Ответ 5
пользователь angular функция foreach для циклического перемещения данных.