![](/img/trans.png)
[英]JS How to compare and count the same elements in each first multidimensional array?
[英]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.