javascript - 获取 firebase 返回的数组的长度

标签 javascript arrays angularjs firebase angularfire

数组的常用 .length 属性不适用于 firebase 返回的数组。这是返回数组的 console.log:

0: Object
1: Object
2: Object
3: Object
4: Object
$$added: function () { [native code] }
$$error: function () { [native code] }
$$moved: function () { [native code] }
$$removed: function () { [native code] }
$$updated: function () { [native code] }
$add: function () { [native code] }
$destroy: function () { [native code] }
$getRecord: function () { [native code] }
$indexFor: function () { [native code] }
$inst: function () { [native code] }
$keyAt: function () { [native code] }
$loaded: function () { [native code] }
$remove: function () { [native code] }
$save: function () { [native code] }
$watch: function () { [native code] }
length: 5
__proto__: Array[0]
concat: function concat() { [native code] }
constructor: function Array() { [native code] }
every: function every() { [native code] }
filter: function filter() { [native code] }
findIndex: function (a){if(null==this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof a)throw new TypeError("predicate must be a function");for(var b,c=Object(this),d=c.length>>>0,e=arguments[1],f=0;d>f;f++)if(f in c&&(b=c[f],a.call(e,b,f,c)))return f;return-1}
forEach: function forEach() { [native code] }
indexOf: function indexOf() { [native code] }
join: function join() { [native code] }
lastIndexOf: function lastIndexOf() { [native code] }
length: 0
map: function map() { [native code] }
pop: function pop() { [native code] }
push: function push() { [native code] }
reduce: function reduce() { [native code] }
reduceRight: function reduceRight() { [native code] }
reverse: function reverse() { [native code] }
shift: function shift() { [native code] }
slice: function slice() { [native code] }
some: function some() { [native code] }
sort: function sort() { [native code] }
splice: function splice() { [native code] }
toLocaleString: function toLocaleString() { [native code] }
toString: function toString() { [native code] }
unshift: function unshift() { [native code] }

即使 console.log 长度属性显示 5 但由于某些原因调用长度属性返回 0。

编辑:

数组的 length 属性设置为 5 但 proto 的 length 属性为 0。.length 属性在 proto 下返回 0 值。

最佳答案

请记住,调用 $asArray 是一个异步操作。

$scope.notes = $firebase(ref).$asArray();
console.log($scope.notes.length); // the data has not loaded yet

您在控制台中看到零长度的原因是因为值可能会在日志缓冲和打印之间发生变化,这可能会产生误导。尝试使用断点来查看执行时的值。

由于数据是异步的,因此您需要使用 $loaded promise。

$scope.notes.$loaded().then(function(notes) {
   console.log(notes.length); // data is loaded here
});

关于javascript - 获取 firebase 返回的数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25340931/

相关文章:

javascript - html 中的多个 javascript

javascript - Javascript正则表达式

Python将numpy数组列表转换为二维数组

arrays - 从函数返回多维数组

javascript - Angular js。在路由器中注入(inject)服务

javascript - 使用 AngularJS 拦截器防止 HTTP 基本身份验证对话框

javascript - 有没有一种方法可以动态地将对象名称传递给函数(作为参数)并使用参数引用该对象的属性?

ruby:如果项目的某些键相同,如何从数组中获取第一个散列项?

javascript - Promise 链(angular javascript)

javascript - 如何将跨浏览器 JavaScript 替换为 jQuery