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

时间:2014-10-19 01:31:05

标签: 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数组。如果我可以使购买的数组采用相同的格式,则代码应该可以正常工作。

1 个答案:

答案 0 :(得分:3)

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

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

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

话虽如此,Firebase数组就像普通的Javascript数组,除了一些实用工具方法,比如$ add,$ remove,$ save。

如果您想在没有实用程序方法的情况下创建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?