[英]How to get the total number of objects created in javascript for a class?
[英]Get total number of same objects in javascript
我有以下數組:
route: [
{
flyFrom: "CDG",
flyTo: "DUB",
return: 0,
},
{
flyFrom: "DUB",
flyTo: "SXF",
return: 0,
},
{
flyFrom: "SFX",
flyTo: "CDG",
return: 1,
}
]
我需要計算返回的次數:0和返回的次數:1。
最終結果如下所示:
對於返回的情況:0出現2次--- 1停止
對於返回的情況:1次出現1次---不間斷
您可以使用Array.prototype.filter()
過濾0
和1
值,並檢查結果的長度(ES6語法):
var route = [
{ flyFrom: 'CDG', flyTo: 'DUB', return : 0, },
{ flyFrom: 'DUB', flyTo: 'SXF', return : 0, },
{ flyFrom: 'SFX', flyTo: 'CDG', return : 1, }
];
var zeros = route.filter(r => r.return === 0).length;
var ones = route.filter(r => r.return === 1).length;
ES5類比:
var zeros = route.filter(function(r) {
return r.return === 0;
}).length;
另一個解決方案是減少數組:
var zeros = route.reduce((a, b) => a + (b.return === 0), 0);
您可以通過一個循環迭代並計算對象中的收益。
var data = { route: [{ flyFrom: "CDG", flyTo: "DUB", 'return': 0, }, { flyFrom: "DUB", flyTo: "SXF", 'return': 0, }, { flyFrom: "SFX", flyTo: "CDG", 'return': 1 }] }, count = {}; data.route.forEach(function (a) { count[a.return] = (count[a.return] || 0) + 1; }); Object.keys(count).forEach(function (k) { document.getElementById('id' + k).innerHTML = count[k]; });
<p>for the cases where return: 0 appears <span id="id0">0</span> times --- 1 Stop</p> <p>for the cases where return: 1 appears <span id="id1">0</span> time --- Non-stop</p>
快速ES 5解決方案:
var zeros = 0, ones = 0;
route.forEach(function(entry) {
if(entry.return == 0) zeros++;
else if(entry.return == 1) ones++;
});
alert("Zeros: " + zeros + " | Ones: " + ones);
創建一個json對象。 然后選擇您想要的孩子。 例如:
var jsonObject = data {
route: [
{
flyFrom: "CDG",
flyTo: "DUB",
return: 0,
},
{
flyFrom: "DUB",
flyTo: "SXF",
return: 0,
},
{
flyFrom: "SFX",
flyTo: "CDG",
return: 1,
}]
}
var zeroCount = 0;
var oneCount = 0;
for(var i = 0; i < jsonObject.route.length; i++){
var j = jsonObject.route[i].return;
if(j == 0) zeroCount++;
else oneCount++;
}
此函數將返回一個帶有兩個鍵的對象,即outbound
inbound
鍵和inbound
鍵,其中包含必需的消息,例如“不停”,“ 1停”等:
function countStops(route) {
const legs = route.reduce((result, r) => {
const leg = r['return'] ? 'inbound' : 'outbound';
result[leg]++;
return result;
}, { outbound: 0, inbound: 0 });
const message = parts => {
switch (parts) {
case 1:
return 'non-stop';
case 2:
return '1 stop';
default:
return `${parts - 1} stops`;
}
};
return {
outbound: message(legs.outbound),
inbound: message(legs.inbound)
};
}
在這里看到小提琴 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.