我有一个表示为车库的数据。 我需要例如计算有carmake1
的车库数量我试过这个:
count = obj.garages.filter(function(item) { return item === "carmake1" }).length;
但是这会返回0,我们知道数据中有实际的carmake1。
以下是数据:
obj = {
"garages": [{
"id": "1",
"carId": "1",
"tags": {
"483": "carmake1",
"485": "carmake3"
}
},
{
"id": "2",
"carId": "1",
"tags": {
"483": "carmake1",
"485": "carmake3"
}
},
{
"id": "3",
"carId": "2",
"tags": {
"484": "carmake2",
"485": "carmake3"
}
},
{
"id": "4",
"carId": "2",
"tags": {
"483": "carmake1",
"485": "carmake3"
}
},
{
"id": "5",
"carId": "3",
"tags": {
"484": "carmake2",
"485": "carmake3"
}
},
]
};
我怎么能得到它?
答案 0 :(得分:1)
您可以通过检查财产来计算。
var obj = obj = { "garages": [{ "id": "1", "carId": "1", "tags": { "483": "carmake1", "485": "carmake3" } }, { "id": "2", "carId": "1", "tags": { "483": "carmake1", "485": "carmake3" } }, { "id": "3", "carId": "2", "tags": { "484": "carmake2", "485": "carmake3" } }, { "id": "4", "carId": "2", "tags": { "483": "carmake1", "485": "carmake3" } }, { "id": "5", "carId": "3", "tags": { "484": "carmake2", "485": "carmake3" } }, ] },
count = obj.garages.filter(function(item) {
return item.tags[483] === "carmake1"
}).length;
console.log(count);
或检查tags
中的所有属性。
var obj = obj = { "garages": [{ "id": "1", "carId": "1", "tags": { "483": "carmake1", "485": "carmake3" } }, { "id": "2", "carId": "1", "tags": { "483": "carmake1", "485": "carmake3" } }, { "id": "3", "carId": "2", "tags": { "484": "carmake2", "485": "carmake3" } }, { "id": "4", "carId": "2", "tags": { "483": "carmake1", "485": "carmake3" } }, { "id": "5", "carId": "3", "tags": { "484": "carmake2", "485": "carmake3" } }, ] },
count = obj.garages.filter(function (item) {
return Object.keys(item.tags).some(function (k) {
return item.tags[k] === "carmake1"
});
}).length;
console.log(count);
答案 1 :(得分:0)
如果carmake1的标签值总是483,@ Nina的解决方案就适合。
否则也许这会有所帮助。
var obj = {
"garages": [{
"id": "1",
"carId": "1",
"tags": {
"483": "carmake1",
"485": "carmake3"
}
},
{
"id": "2",
"carId": "1",
"tags": {
"483": "carmake1",
"485": "carmake3"
}
},
{
"id": "3",
"carId": "2",
"tags": {
"484": "carmake2",
"485": "carmake3"
}
},
{
"id": "4",
"carId": "2",
"tags": {
"483": "carmake1",
"485": "carmake3"
}
},
{
"id": "5",
"carId": "3",
"tags": {
"484": "carmake2",
"485": "carmake3"
}
},
]
};
var found = obj.garages.filter(function(f) {
var c = 0;
Object.keys(f.tags).forEach(function(t) {
if (f.tags[t] === 'carmake1') c++;
});
return c;
});
console.log(found.length);
答案 2 :(得分:0)
Nina有最好的答案,但对于旧浏览器而言:
console.clear();
obj = {
'garages': [{
'id': '1',
'carId': '1',
'tags': {
'483': 'carmake1',
'485': 'carmake3'
}
}, {
'id': '2',
'carId': '1',
'tags': {
'483': 'carmake1',
'485': 'carmake3'
}
}, {
'id': '3',
'carId': '2',
'tags': {
'484': 'carmake2',
'485': 'carmake3'
}
}, {
'id': '4',
'carId': '2',
'tags': {
'483': 'carmake1',
'485': 'carmake3'
}
}, {
'id': '5',
'carId': '3',
'tags': {
'484': 'carmake2',
'485': 'carmake3'
}
}, ]
};
var hascarmake1 = [];
for (var a = 0; a < obj.garages.length; a++) {
var garage = obj.garages[a];
for (var b in garage.tags) {
var tag = garage.tags[b];
if (tag == 'carmake1') {
hascarmake1.push(garage);
break;
}
}
}
console.log(hascarmake1);
&#13;
答案 3 :(得分:0)
这可能是?
var count = 0;
var input = '{"garages":[{"id":"1","carId":"1","tags":{"483":"carmake1","485":"carmake3"}},{"id":"2","carId":"1","tags":{"483":"carmake1","485":"carmake3"}},{"id":"3","carId":"2","tags":{"484":"carmake2","485":"carmake3"}},{"id":"4","carId":"2","tags":{"483":"carmake1","485":"carmake3"}},{"id":"5","carId":"3","tags":{"484":"carmake2","485":"carmake3"}}]}'
objInput = JSON.parse(input);
for (i in objInput.garages) {
if (objInput.garages[i].tags[483] == "carmake1") {
count++;
}
}
console.log(count);