javascript - 将 Firebase $asArray() 转换为 Javascript 数组

标签 javascript firebase angularfire

是否有任何优雅的方法可以从 Firebase $asArray() 转换为常规 Javascript 数组?我正在寻找从 Firebase 返回的数组与常规对象数组之间的区别。

var purchased = $firebase(new Firebase(FIREBASE_URL + 'purchased/' + uid)).$asArray();
  purchased.$loaded(function () {
    $scope.shopping_items = $(items).not(purchased).get();
  }

上面这段代码的目标是获取尚未购买的商品列表,商品列表只是一个javascript数组。如果我可以让购买的数组采用相同的格式,代码应该可以工作。

最佳答案

关于比较对象,首先要了解的是具有相同键和值的两个对象不相等,因为它们不是同一个对象。

var x = {foo: 'bar'};
var y = {foo: 'bar'};
console.log(x === y); // false

当您尝试比较两个对象数组时,请牢记这一点。

话虽如此,除了 $add、$remove、$save 等实用方法外,Firebase 数组就像常规 Javascript 数组一样。

如果您想在不使用实用方法的情况下创建 firebase 数组的副本,您可以使用类似以下的方法。

var regularArray = [];
for (var i = 0; i < firebaseArray.length; i++) {
  regularArray.push(firebaseArray[i]);
}

但是,这并不能真正让您更接近于计算两个数组的差异。不过,以下内容可能会有所帮助。

An efficient way to get the difference between two arrays of objects?

关于javascript - 将 Firebase $asArray() 转换为 Javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26446347/

相关文章:

javascript - AngularFire,登录身份验证和重定向不完全有效

php - 将 session 限制为仅 1 个用户登录实例

android - Firebase 数据库的常用时间

javascript - 按钮 onclick 显示 href 链接

javascript - 使用 Javascript 使用InfiniteScroll 过滤 Firebase 数据集

javascript - 使用 AngularJS 和 Firebase 通过工厂保存项目会引发错误

javascript - 如何使用 AngularFire 实现基于角色的访问控制

angularjs - Firebase 绑定(bind)未反射(reflect)在 Angular View 中

javascript - 通过引用传递的参数

javascript - Codeigniter csrf ajax错误