获取javascript对象中的元素计数,其中key=option
这是一个javascript对象。获取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:
如何获得条件为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);