[英]retrieve unique values from the json
我知道這應該很容易,但我根本無法讓這件事工作。 我有一個具有以下結構的對象:
"name": "Machine 1",
"categories": [
{
"name": "Planned",
"days": [
{
"id": 0,
"date": "2015-09-14T00:00:00",
"time": 768
},
{
"id": 0,
"date": "2015-09-15T00:00:00",
"time": 1100
},
{
"id": 0,
"date": "2015-09-16T00:00:00",
"time": 356
}
]
},
{
"name": "Item 1",
"days": [
{
"id": 0,
"date": "2015-09-14T00:00:00",
"time": 1323
},
{
"id": 0,
"date": "2015-09-15T00:00:00",
"time": 1475
},
{
"id": 0,
"date": "2015-09-16T00:00:00",
"time": 668
}
]
},
因此,如果我想在結構樹中顯示它,返回的對象將如下所示
我想做什么而不是我目前的方法(手動迭代)
angular.forEach(machine.categories, function (category, index) {
angular.forEach(category.days, function (day, index) {
newData.labels.push(day.date);
});
});
是使用一個已經存在的庫(基於我的研究, underscore.js
應該是一個完美的適合這個)並正確地做(我正在努力學習,如何使用它)。
所以我想要實現的是獲取日期格式的唯一日期列表。 所以我生成的對象看起來像這樣:
var result = ["2015-09-14", "2015-09-15", "2015-09-16"]
(這個會更好)
有沒有辦法如何使用庫(意味着沒有手動迭代)?
您可以將Set
用於唯一值
var data = { "name": "Machine 1", "categories": [{ "name": "Planned", "days": [{ "id": 0, "date": "2015-09-14T00:00:00", "time": 768 }, { "id": 0, "date": "2015-09-15T00:00:00", "time": 1100 }, { "id": 0, "date": "2015-09-16T00:00:00", "time": 356 }] }, { "name": "Item 1", "days": [{ "id": 0, "date": "2015-09-14T00:00:00", "time": 1323 }, { "id": 0, "date": "2015-09-15T00:00:00", "time": 1475 }, { "id": 0, "date": "2015-09-16T00:00:00", "time": 668 }] }] }; var set = new Set(); data.categories.forEach(e => e.days.forEach(e => set.add(e.date))); document.write('<pre>' + JSON.stringify(Array.from(set)) + '</pre>');
使用下划線(比特詳細,假設您在一個名為data
的變量中解析了JSON):
var result = _.uniq(
_.flatten(
_.map(data.categories, function(category) {
return _.map(_.pluck(category.days, 'date'), function(date) {
return date.replace(/T\d+:\d+:\d+$/, '');
});
})));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.