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

获取未定义的angularjs中的对象长度,angularjs,Angularjs,如何获取对象长度 在控制台中,我的对象如下所示: Object { 2: true, 3: true, 4: true } .length将给我未定义的。我只想得到这个案例的results=3 var keys = Object.keys(objInstance); var len = keys.length; 其中len是你的“长度” 可能有一些情况我没有想到这在哪里不起作用,但它应该做你需要的,给出你的例子 您不想在任何需要获取长度的地方重复该Object.keys(obj),因为

如何获取对象长度

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

Object {
 2: true,
 3: true,
 4: true
}
.length
将给我未定义的。我只想得到这个案例的
results=3

var keys = Object.keys(objInstance);
var len = keys.length;
其中len是你的“长度”


可能有一些情况我没有想到这在哪里不起作用,但它应该做你需要的,给出你的例子

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

Object.prototype.length = function(){
    return Object.keys(this).length
}
当你需要知道物体的长度时,你可以跑

exampleObject.length()
上面有一个问题,如果您创建的对象具有“长度”键,则会中断“原型”函数:

exampleObject : { length: 100, width: 150 } 

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

您还可以使用过滤器

编辑:

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;
 }
});
旧答案:

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>
内容

只需通过下面的代码即可获得


var itemsLength=Object.keys(您的对象).length

将这些答案中的一些组合到

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

<div ng-show="(furry.animals | numkeys) > 10">lots of furry animals</div>
许多毛茸茸的动物

Short variant
Object.keys($scope.someobject).length
如果我们从API检索数据,我们还可以添加一个小的验证

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

甚至我都不明白为什么在角度标记中不能通过“Object.keys”获取对象的值。但这里有一些简单的问题。查看。

一个更好的方法:
app.filter('objLength',function(){return function(object){return object.keys(object.length;}})谢谢。这很奇怪,但这里的关键时刻是,您需要首先获取密钥并将其分配给一个变量,然后才能获得长度。Object.keys(objInstance).length将不起作用这似乎是。。。我不知道monstro为什么说Object.keys(objInstance).length不起作用,尽管我确实在我提供的链接中看到了一些评论,表明它可能不适用于较旧的(IE8及以下)浏览器。使用现代浏览器尝试一下,您可能会对结果感到惊讶。这在控制台中有效,但在angular应用程序中无效,请参见上面的答案。检查此文档,您可以在应用程序中获得javascript或基于javascript的LIB中的对象长度可能是Just perfect的副本;)这是因为所有JavaScript对象都将此原型链用作JS核心功能的一部分,并且可能会产生其他问题。