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)))
相关文章:
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- HTML 显示/隐藏元素 JS 不起作用
- 定位 d3 上的其他元素.js事件上
- 如何获取
- 元素 js/ajax 的 Id 值
- 从元素 JS 中获取类
- 单击 html 元素 JS
- 数据未追加到车把中的元素.js
- 如何使用节点逐个获取元素.js Cheerio
- MEJS(媒体元素JS)播放功能
- 检测是否在输入元素JS中输入了特殊字符
- 如何根据下拉选择消除HTML表单中的元素?(JS吗?)
- 带有动态链接标记的可满足元素(JS、jQuery)
- 仅为UL的第一个元素(JS或jquery)添加类的样式
- 自动时间元素js
- 可以't获取API响应的特定元素[JS]
- 修改指定li元素JS的父级
- 奇异:CSS转换元素JS "点击通过"
- 通过文本框获取数组元素(JS验证)