簡體   English   中英

獲取JavaScript中相同對象的總數

[英]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()過濾01值,並檢查結果的長度(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM