我假装在假日变量的console.log出现在列表中而不是作为数组。如何将此信息作为简单对象获取?
我的json:
[{
"2016-10-10":[{"name":"Columbus Day","country":"US","date":"2016-10-10"}],
"2016-10-31":[{"name":"Halloween","country":"US","date":"2016-10-31"}]
}]
我的应用:
app.factory('calendario', function($http) {
return{
getJobs : function() {
return $http({
url: '/app/components/home/controller/test_calendar.json',
method: 'GET'
})
}
}
});
控制器:
var holidays = [];
calendario.getJobs().success(function(data){
holidays.push(data[0]);
});
$scope.setDayContent = function(date) {
console.log(holidays);
};
示例:
我想要这个
我不想要这个
答案 0 :(得分:0)
而不是列表使用地图
holidays = {}
然后将项目放在地图中,键上日期并为数组赋值:
holidays[data[0].date] = data[0].days;
但看起来你已经有了地图,所以你可能只是直接保存数据而不是在列表中推送数据:
var holidays = {};
calendario.getJobs().success(function(data){
holidays=data;
});
$scope.setDayContent = function(date) {
console.log(holidays);
};
答案 1 :(得分:0)
这个问题很容易......不是吗?
var holidays = [];
calendario.getJobs().success(function(data){
holidays=data[0];
});
$scope.setDayContent = function(date) {
console.log(holidays);
};
答案 2 :(得分:0)
你想要展平它,所以,尼克是对的,不要使用数组,而是使用dict / hash。如果您的功能受到影响,您可以使用一些解决方法:
var holidays = [{
"2016-10-10":[{"name":"Columbus Day","country":"US","date":"2016-10-10"}],
"2016-10-31":[{"name":"Halloween","country":"US","date":"2016-10-31"}]
}];
var flatten_holidays = holidays.reduce(function(elem){return elem});
我不觉得它是特定的AngularJS问题,更像是常见的JavaScript。 对于你的例子,它将是:
var holidays = [];
calendario.getJobs().success(function(data){
holidays.push(data[0]);
});
$scope.setDayContent = function(date) {
console.log(holidays.reduce(function(elem){return elem}));
};
或者,如果首选是使用dict / hash:
var holidays = {};
calendario.getJobs().success(function(data){
//if data is: {"2016-10-10":[{"name":"Columbus day","country":"US","date":"2016-10-10"}]}
var key = Object.keys(data)[0];
var value = data[key];
holidays[key] = value;
});
$scope.setDayContent = function(date) {
console.log(holidays);
};