簡體   English   中英

遍歷Javascript對象返回值的總和

[英]looping through Javascript Object returning sum of values

我想做的是遍歷一個對象,獲取每個候選人出現的總時間並將其打印到頁面上。

我一直在努力奮斗。 我是javascript新手,使用對象對我來說是很新的東西。

感謝您的幫助!

 var entry = [ { candidate : "guy1", rank : 1, state : "AK", vote_count : "2" }, { candidate : "guy2", rank : 1, state : "MI", vote_count : "3" }, { candidate : "guy3", rank : 1, state : "AK", vote_count : "5" }, { candidate : "guy2", rank : 1, state : "AL", vote_count : "4" }, { candidate : "guy2", rank : 1, state : "FL", vote_count : "9" }, { candidate : "guy1", rank : 1, state : "MN", vote_count : "7" } ]; for ( var i = 0, l = entry.canidate.length; i < l; i++ ) { guy1 += entry.canidate[i]; } console.log(guy1); 

您可以將候選對象用作關鍵對象並計算票數。

 var entry = [{ candidate: "guy1", rank: 1, state: "AK", vote_count: "2" }, { candidate: "guy2", rank: 1, state: "MI", vote_count: "3" }, { candidate: "guy3", rank: 1, state: "AK", vote_count: "5" }, { candidate: "guy2", rank: 1, state: "AL", vote_count: "4" }, { candidate: "guy2", rank: 1, state: "FL", vote_count: "9" }, { candidate: "guy1", rank: 1, state: "MN", vote_count: "7" }], count = {}; entry.forEach(function (a) { count[a.candidate] = (count[a.candidate] || 0) + +a.vote_count; }); console.log(count); 

您可以使用候選人的總和創建一個新對象,如下所示:

https://jsfiddle.net/he58xsb8/

var entry = [
  {
    candidate : "guy1",
    rank : 1,
    state : "AK",
    vote_count : "2"
  },
  {
    candidate : "guy2",
    rank : 1,
    state : "MI",
    vote_count : "3"
  },
  {
    candidate : "guy3",
    rank : 1,
    state : "AK",
    vote_count : "5"
  },
  {
    candidate : "guy2",
    rank : 1,
    state : "AL",
    vote_count : "4"
  },
  {
    candidate : "guy2",
    rank : 1,
    state : "FL",
    vote_count : "9"
  },
  {
    candidate : "guy1",
    rank : 1,
    state : "MN",
    vote_count : "7"
  }
];

var voteByCandidate = {};
for ( var i = 0; i < entry.length; i++ ) {
    var result = entry[i];
    if (!voteByCandidate[result.candidate]) {
        voteByCandidate[result.candidate] = 0;
    }
    voteByCandidate[result.candidate] += result.vote_count * 1; // Convert to number.
}

console.log(voteByCandidate);

您可以創建一個候選人地圖和循環條目數組。對於每個相同的候選人,遞增地圖中的鍵。

var candidateMap = {};

entry.forEach( function(candidate) {
   candidateMap[candidate.candidate] = candidateMap[candidate.candidate] || 0;
candidateMap[candidate.candidate] += 1;
}); 

您可以使用reduce輕松地做到這一點:

 var entries = [{ candidate: "guy1", rank: 1, state: "AK", vote_count: "2" }, { candidate: "guy2", rank: 1, state: "MI", vote_count: "3" }, { candidate: "guy3", rank: 1, state: "AK", vote_count: "5" }, { candidate: "guy2", rank: 1, state: "AL", vote_count: "4" }, { candidate: "guy2", rank: 1, state: "FL", vote_count: "9" }, { candidate: "guy1", rank: 1, state: "MN", vote_count: "7" }]; var result = entries.reduce(function(r, c) { r[c.candidate] = (r[c.candidate] || 0) + parseInt(c.vote_count); return r; }, {}); console.log(result); 

我正在尋找每個候選人出現的總時間

您可以使用數組過濾器過濾候選者,然后減少以計算每個候選者的出現次數

var _filter=[];
entry.filter(function(item){
  _filter.push(item.candidate)
})

var _reducedArray =_filter.reduce(function(prev,next){
        prev[next] = (prev[next] + 1) || 1;
        return prev;
    },{});

console.log(_reducedArray);

的jsfiddle

這可能是您需要的:

const votes = {};
entry.foraEach(item => {
    if(!votes.hasOwnProperty(item.candidate)) {
        votes[item.candidate] = +item.vote_count;
    } else votes[item.candidate] += +item.vote_count;
});

您將在votes對象中擁有所有候選人和投票。

 var entry = [ { candidate : "guy1", rank : 1, state : "AK", vote_count : "2" }, { candidate : "guy2", rank : 1, state : "MI", vote_count : "3" }, { candidate : "guy3", rank : 1, state : "AK", vote_count : "5" }, { candidate : "guy2", rank : 1, state : "AL", vote_count : "4" }, { candidate : "guy2", rank : 1, state : "FL", vote_count : "9" }, { candidate : "guy1", rank : 1, state : "MN", vote_count : "7" } ]; function getCandidateTimes(entry, candidateName){ var appearTimes = 0; for (var i=0, len = entry.length; i < len; i++){ if(entry[i].candidate == candidateName){ appearTimes++; } } return appearTimes; } var guy1AppearTimes = getCandidateTimes(entry, 'guy1'); console.log('guy1 appears ' + guy1AppearTimes + ' times!'); var guy2AppearTimes = getCandidateTimes(entry, 'guy2'); console.log('guy2 appears ' + guy2AppearTimes + ' times!'); //and so on....... 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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