2016-11-16 75 views
1

我假裝做的節日變量console.log出現在列表中,而不是一個數組。我如何將這些信息作爲一個簡單的對象來獲取?如何訪問一個json對象0使用JavaScript

我的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); 

}; 

例子:

我想這

enter image description here

我不希望這

enter image description here

+0

什麼是預期的輸出? – brk

+4

[有沒有這樣的事情作爲「JSON對象」](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) – Andreas

+0

刪除'[和']'從頭到尾。 –

回答

0

你要扁平化,所以,尼克是正確的,不使用數組,使用字典/哈希來代替。如果您的功能將受到影響,可以用一些變通方法:

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})); 
}; 

,或者,如果偏好是使用字典/哈希:

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); 
}; 
+0

的字典/哈希的工作很好,但他返回在我的例子 2圖像我需要的第一形象,但你的例子是很好的,我會用你的榜樣 –

+0

嘗試裏面的日曆功能工作正常,但當我打電話2函數中的var假期返回爲對象 –

+0

根據您提供的預期輸出的圖像 - 對象是您想要獲得的。如果沒有 - 請提供更多細節。 – Vadim

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); 
}; 
+0

但我的問題是[0]不適用於我我不知道。可能是數組是不同的對象否? –

+0

如果你拿我的代碼但沒有[0],它會怎麼做?我認爲那可能是你當時需要的。你能粘貼我的輸出嗎? –

+0

查看我想要的圖像示例。但是,是的,你是對的 –

0

這個問題是容易...沒有?

var holidays = []; 

    calendario.getJobs().success(function(data){ 
     holidays=data[0]; 
    }); 

    $scope.setDayContent = function(date) { 
     console.log(holidays); 
    }; 
+0

或沒有人...你的例子給我, 數組[0]長度:0__proto__:數組[0] –