有没有优雅的方法从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数组。如果我可以使购买的数组采用相同的格式,则代码应该可以正常工作。
答案 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?