javascript - 我如何做一个数组组并对其进行计数,就像在 MySQL 中按给定列 id 分组一样?

标签 javascript multidimensional-array duplicates

我有一个大数组,如下所示,现在我需要按第一列进行分组并计算该 channel 存在的总数。

例如:

var original_db = [
  ["channel1", "online"],
  ["channel2", "offline"],
  ["channel3", "online"],
  ["channel1", "online"],
  ["lot more"]....
]

原始结果的预期结果需要是:

var custom_db = [
  ["channel1", 2], 
  ["channel2", 0],
  ["channel3", 1]
]

编辑:

for(var key in original_db) {
    var i;
    for (i = 0; i < original_db.length; i += 1) {
        if (original_db[i][0] === original_db[key][0]) {
            original_db.splice(i, 1);
            return;
        }
    }

}

console.log(original_db); 

最佳答案

使用一个属性是第一个元素的对象来保持计数:

var counts = {};

for (var i = 0; i < original.length; i++) {
    var key = original[i][0];
    if (counts[key]) {
        counts[key]++;
    } else {
        counts[key] = 1;
    }
}

然后你可以把它变成你的最终数组,虽然我不确定为什么你更喜欢它而不是 counts 对象:

final = [];
for (var key in counts){
    final.push([key, counts[key]]);
}

关于javascript - 我如何做一个数组组并对其进行计数,就像在 MySQL 中按给定列 id 分组一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26323356/

相关文章:

javascript - jQuery 检测固定元素的背景颜色

javascript - 将json多维转换为数组javascript

Javascript多维数组按数字顺序排序

c# - 从不区分大小写的列表中获取重复项

javascript - 设置图像 src 属性后可以立即触发 onload 事件吗?

javascript - 在 react/redux 应用程序中单击按钮添加加载程序

python - 为 Pandas Dataframe 中的重复集创建规则

algorithm - 使用什么算法来删除重复项?

javascript - NodeJS 函数 readFileSync - 我传递 "utf8"还是 {encoding : "utf8"}?

javascript - react : Filter multidimensional array object by value in component