获取angularjs中的对象长度是未定义的

时间:2015-03-17 19:32:47

标签: angularjs

如何获得物体长度?

在控制台中,我的对象如下所示:

Object {
 2: true,
 3: true,
 4: true
}

.length会给我 undefined 。我只想得到results = 3这个案例。

8 个答案:

答案 0 :(得分:34)

var keys = Object.keys(objInstance);
var len = keys.length;

len是你的长度。"

在某些情况下,我还没有想到这不起作用的地方,但考虑到你的榜样,它应该做你需要的事情。

答案 1 :(得分:6)

将其中一些答案合并到

app.filter('numkeys', function() {
  return function(object) {
    return Object.keys(object).length;
  }
});

似乎有用

<div ng-show="(furry.animals | numkeys) > 10">lots of furry animals</div>

答案 2 :(得分:4)

您也可以使用过滤器

修改

app.filter('objLength', function() { 
 return function(object) { 
  return Object.keys(object).length; 
 } 
});

旧答案:

app.filter('objLength', function() {
 return function(object) {
  var count = 0;

  for(var i in object){
   count++;
  }
  return count;
 }
});

然后使用它可能就像这样

<div ng-hide="(navigations._source.languages | objLength) == 1"> content</div>

答案 3 :(得分:3)

你不想在任何想要获取长度的地方重复Object.keys(obj),因为代码可能会非常混乱。因此,只需将其放入一些个人项目片段库即可在整个网站上使用:

Object.prototype.length = function(){
    return Object.keys(this).length
}

并且当您需要知道对象的长度时,您可以运行

exampleObject.length()

上面有一个问题,如果你创建一个具有“长度”键的对象,你将打破“原型”函数:

exampleObject : { length: 100, width: 150 } 

但是您可以使用自己的同义词来表示长度,例如“l()”而不是“length()”

答案 4 :(得分:3)

可以通过以下代码获取

var itemsLength = Object.keys(your object).length;

答案 5 :(得分:1)

简短变种Object.keys($scope.someobject).length

答案 6 :(得分:0)

如果我们要从API中删除数据,我们还可以添加一个小的验证。

app.filter('objLength', function() { 
 return function(object) { 
  return object ? Object.keys(object).length : "";
 } 
});

答案 7 :(得分:0)

即使我也不明白为什么在Angular标记中无法通过'Object.keys'获得Objects的值。但是这里有一些简单的solution。看看。