【问题标题】:Select a "column" from a firebase Array从 Firebase 数组中选择一个“列”
【发布时间】:2016-09-02 15:26:17
【问题描述】:

我在一个使用 AngularJS 和 Firebase 的项目中工作,一切正常。

但我只需要“提取”一个数组中的温度值,然后当然用 javascript 提取其他数组中的湿度值。

我一直在尝试使用文档,但我找不到方法,firebase 上没有“Select From”方法,您能帮帮我吗?

谢谢!

【问题讨论】:

  • 你看过 Javascript 中的.map() 功能吗?
  • 是的,@GamerNebulae 但我不确定它是如何工作的,所以我想不通:(

标签: javascript arrays angularjs firebase


【解决方案1】:

map() 函数在 Javascript 中的工作原理如下。

假设你有当前的数据集:

var dataSet = [{
    humidity: 10.4,
    temperature: 20.9,
},
{
    humidity: 12.7,
    temperature: 24.2,
}];

首先,该函数将遍历数据集中的每个条目。这会产生O(n) 的时间复杂度。如果您不喜欢速度,或者这只是一个有趣的项目,请不要担心,但这只是需要考虑的事情。然后该函数所做的是它根据您对数据集执行的操作返回一个新集合。在您的情况下,您只想return 湿度字段。所以,你这样做:

var dataSet = ...; //See above
var humidityCollection = dataSet.map(function(element) {
  return element['humidity']; //You can also write element.humidity
});

请注意,如果您使用 ECMAScript 6 及更高版本,则可以将上述函数用作 lambda 表达式。它的作用相同,但它只是缩短了代码并使其更具可读性。

var humidityCollection = dataSet.map((element) => {
  return element['humidity'];
});

这将产生以下数据集:

[10.4, 12.7]

我使用的来源和更多文档可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

【讨论】:

  • 嗯,首先,谢谢你的帮助,我试过这样的函数,但是输出的是一个空数组
  • var incuData = new Firebase('birdmaker.firebaseio.com/data'); var completeData = $firebaseArray(incuData); var riskCollection = completeData.map(function(element) { return element['temp']; //你也可以写element.humidity });
  • @SebasPinto $firebaseArray 来自哪里?
猜你喜欢
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 2011-03-30
相关资源
最近更新 更多