簡體   English   中英

JS。 循環遍歷多維數組以計算每列中元素的出現次數

[英]JS. Loop through multidimensional array to count occurrences of elements in each column

我想按列計算每個元素的出現次數。 我的下面的代碼計算第一列,生成{"dem":1,"rep":1,"ind":3}因為第一列中有1個dem,1個rep和3個ind。 我想在下面擴展我的代碼,這樣我最終會得到每個列的對象(如上所述),而不僅僅是一列。

我該怎么辦?

voters =
         [["dem", "ind", "rep"],
          ["rep", "ind", "dem"],
          ["ind", "dem", "rep"],
           ["ind", "dem", "rep"],
          ["ind", "rep", "dem"]];


 var columnArr = voters.map(function(row) {
  return row[0];
}); 

count = {}
columnArr.forEach(function(el){
    count[el] = count[el] + 1 || 1
});

  document.write( (JSON.stringify(count)));

您可以使用arrray進行計數,並使用對象進行單獨的列計數。

 var voters = [["dem", "ind", "rep"], ["rep", "ind", "dem"], ["ind", "dem", "rep"], ["ind", "dem", "rep"], ["ind", "rep", "dem"]], count = []; voters.forEach(function (a) { a.forEach(function (b, i) { count[i] = count[i] || {}; count[i][b] = (count[i][b] || 0) + 1; }); }); document.write('<pre>' + JSON.stringify(count, 0, 4) + '</pre>'); 

您只需要另一個循環來迭代列:

 voters = [ ["dem", "ind", "rep"], ["rep", "ind", "dem"], ["ind", "dem", "rep"], ["ind", "dem", "rep"], ["ind", "rep", "dem"] ]; count = {} for (var colIndex = 0; colIndex < voters[0].length; ++colIndex) { var columnArr = voters.map(function(row) { return row[colIndex]; }); console.log(columnArr); count[colIndex] = {}; columnArr.forEach(function(el) { count[colIndex][el] = count[colIndex][el] ? count[colIndex][el] + 1 : 1; }); } document.write((JSON.stringify(count))); 

這不是一個優雅的解決方案,但您可以輕松地擴展您已經完成的操作,只需循環運行即可

voters = [
  ["dem", "ind", "rep"],
  ["rep", "ind", "dem"],
  ["ind", "dem", "rep"],
  ["ind", "rep", "dem"]
];

var colCounts = [];

function countUsagesByColumn(numCols) {
  var columnArr;
  var count;
  for (var i = 0; i < numCols; i++) {
    columnArr = voters.map(function(row) {
      return row[i];
    });

    count = {}
    columnArr.forEach(function(el) {
      count[el] = count[el] + 1 || 1
    });
    console.log(count);
    colCounts.push(count);
  }
}

countUsagesByColumn(3);

document.write((JSON.stringify(colCounts)))

暫無
暫無

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

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