这是一个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' },
};
答案 0 :(得分:2)
如果要迭代对象:
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++;
}
}
答案 1 :(得分:1)
只是一个示例输出。根据您的要求进行修改。
var 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' },
};
var count = 0;
for (var property in paintings) {
if (paintings.hasOwnProperty(property)) {
if (paintings[property]['gallery'] == 'Abstract' || paintings[property]['gallery'] == 'Game' ) {
count++;
}
}
}
alert(count);

答案 2 :(得分:0)
试试这个:
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);
答案 3 :(得分:0)
最直接的方法是使用本机函数:
// 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"
答案 4 :(得分:0)
尝试使用jquery grep。
将对象更改为数组,就像这样。
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);
答案 5 :(得分:-1)
使用for循环迭代数组...
编辑:但我只是注意到它不是一个数组,但它是一个Javascript对象。由于直括号([]),数组是可识别的,而它有大括号({}) 因此,以下代码段不适用于此。
var count = 0;
for (var i = 0; i < window.paintings.length; i++) {
var item = window.paintings[i];
if (...) {
count = count + 1;
}
}
这样的事情应该有效:
for (var property in object) {
if (object.hasOwnProperty(property)) {
// do your logic here
}
}