Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取javascript对象中的元素计数,其中key=option_Javascript_Jquery_Object - Fatal编程技术网

获取javascript对象中的元素计数,其中key=option

获取javascript对象中的元素计数,其中key=option,javascript,jquery,object,Javascript,Jquery,Object,这是一个javascript对象。 如何获得条件为gallery=“Abstract”和gallery=“Game”的元素计数 window.paintings = { 1: { id: 1, name: 'Abstract 1', gallery: 'Abstract', src:'Image64.jpg' }, 2: { id: 2, name: 'Abstract 2', gallery: 'Abstract', src:'Image65.jpg' }, 3: { id:

这是一个javascript对象。
如何获得条件为gallery=“Abstract”gallery=“Game”的元素计数

window.paintings = { 
  1: { id: 1, name: 'Abstract 1', gallery: 'Abstract', src:'Image64.jpg' }, 
  2: { id: 2, name: 'Abstract 2', gallery: 'Abstract', src:'Image65.jpg' }, 
  3: { id: 3, name: 'Abstract 3', gallery: 'Abstract', src:'Image66.jpg' }, 
  4: { id: 1, name: 'Game 1', gallery: 'Game', src:'Image66.jpg' }, 
  5: { id: 2, name: 'Game 2', gallery: 'Game', src:'Image66.jpg' }, 
};

使用for循环在数组上迭代

编辑:但我注意到它不是一个数组,而是一个Javascript对象。数组是可识别的,因为它有直括号([]),而它有花括号({}) 因此,下面的代码片段对此不起作用

var count = 0;

for (var i = 0; i < window.paintings.length; i++) {
  var item = window.paintings[i];
  if (...) {
     count = count + 1;
  }
}

只是一个示例输出。根据您的要求进行修改

var={
1:{id:1,名称:'Abstract 1',图库:'Abstract',src:'Image64.jpg'},
2:{id:2,名称:'Abstract 2',图库:'Abstract',src:'Image65.jpg'},
3:{id:3,名称:'Abstract 3',图库:'Abstract',src:'Image66.jpg'},
4:{id:1,名称:'Game 1',图库:'Game',src:'Image66.jpg'},
5:{id:2,名称:'Game 2',图库:'Game',src:'Image66.jpg'},
};
var计数=0;
for(绘画中的var属性){
if(画作。拥有自己的财产(财产)){
如果(画作[属性]['gallery']=='Abstract'| |画作[属性]['gallery']=='Game'){
计数++;
}
}
}

警报(计数)如果要在对象上迭代:

p = { 
  1: { id: 1, name: 'Abstract 1', gallery: 'Abstract', src:'Image64.jpg' }, 
  2: { id: 2, name: 'Abstract 2', gallery: 'Abstract', src:'Image65.jpg' }, 
  3: { id: 3, name: 'Abstract 3', gallery: 'Abstract', src:'Image66.jpg' }, 
  4: { id: 1, name: 'Game 1', gallery: 'Gme', src:'Image66.jpg' }, 
  5: { id: 2, name: 'Game 2', gallery: 'Game', src:'Image66.jpg' }, 
};
var count = 0;
for (var key in p) {
  if (p.hasOwnProperty(key)) {
    if(p[key].gallery === "Abstract" || p[key].gallery === "Game")
      count++;
  }
}
试试这个:

var AbstractCount=0;
var GameCount=0;
window.paintings = { 
  1: { id: 1, name: 'Abstract 1', gallery: 'Abstract', src:'Image64.jpg' }, 
  2: { id: 2, name: 'Abstract 2', gallery: 'Abstract', src:'Image65.jpg' }, 
  3: { id: 3, name: 'Abstract 3', gallery: 'Abstract', src:'Image66.jpg' }, 
  4: { id: 1, name: 'Game 1', gallery: 'Game', src:'Image66.jpg' }, 
  5: { id: 2, name: 'Game 2', gallery: 'Game', src:'Image66.jpg' }, 
};
for(keys in window.paintings){
    if(window.paintings[keys].gallery == 'Abstract'){
      AbstractCount++;
    }
    else if(window.paintings[keys].gallery == 'Game'){
        GameCount++;    
    }
}
alert(AbstractCount);
alert(GameCount);

最直接的方法是使用本机函数:

// This is a reusable function to count elements in object
// based on some function
var countElements = function(obj, condition) {
    return Object.keys(obj).filter(function(key) {
        if (obj.hasOwnProperty(key)) {
            var item = obj[key];
            return condition(obj[key]);
        }
    }).length;
};

var count = countElements(window.paintings, function(item) {
    // Return true from here if you want to count particular element
    return item.gallery == 'Abstract' || item.foo == 'Game'; // you can add more conditions here.
});
alert(count); // Alerts "3"
尝试使用jquerygrep

将对象更改为数组,执行此操作,如下所示

var arr = [ 
  { id: 1, name: 'Abstract 1', gallery: 'Abstract', src:'Image64.jpg' }, 
  { id: 2, name: 'Abstract 2', gallery: 'Abstract', src:'Image65.jpg' }, 
  { id: 3, name: 'Abstract 3', gallery: 'Abstract', src:'Image66.jpg' }, 
  { id: 1, name: 'Game 1', gallery: 'Game', src:'Image66.jpg' }, 
  { id: 2, name: 'Game 2', gallery: 'Game', src:'Image66.jpg' }
];


var x = $.grep(arr, function( n, i ) {
  return (n.gallery == 'Abstract' || n.gallery == 'Game');
});


$("#result").html(x.length);

这是一个JavaScript对象,不是数组。这是一个JavaScript对象,不是数组。哦!对此我很抱歉。谢谢@VisioN and Vigneswaran Marimuthugallery=“Abstract”和gallery=“Game”-画廊可以是其中之一,但不能同时是两者。也许你的意思是“或”而不是“和”?还是两个单独的计数?库实际上是用户定义的。所以我想对每个画廊进行单独计数。请检查问题。它是JavaScript对象。
var arr = [ 
  { id: 1, name: 'Abstract 1', gallery: 'Abstract', src:'Image64.jpg' }, 
  { id: 2, name: 'Abstract 2', gallery: 'Abstract', src:'Image65.jpg' }, 
  { id: 3, name: 'Abstract 3', gallery: 'Abstract', src:'Image66.jpg' }, 
  { id: 1, name: 'Game 1', gallery: 'Game', src:'Image66.jpg' }, 
  { id: 2, name: 'Game 2', gallery: 'Game', src:'Image66.jpg' }
];


var x = $.grep(arr, function( n, i ) {
  return (n.gallery == 'Abstract' || n.gallery == 'Game');
});


$("#result").html(x.length);