簡體   English   中英

從json中檢索唯一值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM