【问题标题】:Angular Firebase retrieving collected data from anonymous usersAngular Firebase 从匿名用户那里检索收集到的数据
【发布时间】:2015-01-28 03:13:54
【问题描述】:

我有一个使用 Angular 和 Firebase 的调查系统,它将用户回答的结果存储在每个用户特定的对象内。这对于存储数据很有效,但我意识到,由于每个对象都有一个唯一的名称,因此可能很难将数据拉回。

我想遍历每个对象并将所有值拉到一起。因此,对于所有 50 个条目,找到 comprehension.icons.damage[1]

的总数

如何构造一个循环遍历具有唯一名称的对象,例如下面的对象?

这是我的 json 结构

  "usersanonymous:-JgTyGt6An3WWyLvnnuu" : {
"comprehension" : {
  "-JgTzC0r_H58n7y8Al_-" : {
    "date" : 1422154060632,
    "icons" : [ {
      "damage" : [ null, "0", "3", "3" ],
      "ocular" : [ null, "2", "3", "1" ],
      "physical therapy" : [ null, "0", "4", "4" ],
      "skin" : [ null, "4", "0", "1" ]
    } ]
  }
}


 },
  "usersanonymous:-JgU-ryIpI-HR7D4VDkp" : {
    "comprehension" : {
      "-JgU0MwBwisNbjvRFGOT" : {
        "date" : 1422154629142,
        "icons" : [ {
          "damage" : [ null, "0", "3", "4" ],
          "ocular" : [ null, "1", "4", "3" ],
          "physical therapy" : [ null, "2", "4", "3" ],
          "skin" : [ null, "4", "1", "3" ]
        } ]
      }
    }
  }

【问题讨论】:

    标签: javascript json angularjs firebase


    【解决方案1】:

    鉴于您的输入数据,我将创建一个函数来仅提取您感兴趣的数据。我已经用原始 javascript 编写了这个 - 如果您使用 jQuery,您可能会喜欢使用 $.map 而不是 for (x in y)。

    
    var data = {
        "usersanonymous:-JgTyGt6An3WWyLvnnuu": {
            "comprehension": {
                "-JgTzC0r_H58n7y8Al_-": {
                    "date": 1422154060632,
                    "icons": [{
                        "damage": [null, "0", "3", "3"],
                        "ocular": [null, "2", "3", "1"],
                        "physical therapy": [null, "0", "4", "4"],
                        "skin": [null, "4", "0", "1"]
                    }]
                }
            }
        },
        "usersanonymous:-JgU-ryIpI-HR7D4VDkp": {
            "comprehension": {
                "-JgU0MwBwisNbjvRFGOT": {
                    "date": 1422154629142,
                    "icons": [{
                        "damage": [null, "0", "3", "4"],
                        "ocular": [null, "1", "4", "3"],
                        "physical therapy": [null, "2", "4", "3"],
                        "skin": [null, "4", "1", "3"]
                    }]
                }
            }
        }
    };
    
    function extractComprehension(rawData) {
        var result = [];
    
        for (var usersanonymous in rawData) {
            usersanonymous = rawData[usersanonymous];
            if (usersanonymous.comprehension) {
                for (var token in usersanonymous.comprehension) {
                    token = usersanonymous.comprehension[token];
                    if (token.icons) {
                        result.push(token.icons[0]);
                    }
                }
            }
        }
    
        return result;
    }
    
    function sumOf(objectList, property, index) {
        var result = 0;
    
        for (var o in objectList) {
            var numbers = (objectList[o][property] || []);
    
            if (numbers.length >= index) {
                result += parseInt(numbers[index], 10);
            }
        }
    
        return result;
    }
    

    使用这个迷你 api 你可以得到你感兴趣的属性的总和:

    
    // Get the data array.
    var comprehension = extractComprehension(data);
    
    // Sum some property.
    console.log(sumOf(comprehension, 'damage', 3));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-28
      • 2018-08-13
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 2021-12-31
      相关资源
      最近更新 更多