Javascript 如何对数组组进行计数,就像在MySQL组中一样,根据给定的列id进行计数?

Javascript 如何对数组组进行计数,就像在MySQL组中一样,根据给定的列id进行计数?,javascript,multidimensional-array,duplicates,Javascript,Multidimensional Array,Duplicates,我有一个大数组,如下所示,现在我需要按第一列进行分组,并计算该通道存在的总数 例如: var original_db = [ ["channel1", "online"], ["channel2", "offline"], ["channel3", "online"], ["channel1", "online"], ["lot more"].... ] 原始结果的预期结果需要是: var custom_db = [ ["channel1", 2], ["chan

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

例如:

var original_db = [
  ["channel1", "online"],
  ["channel2", "offline"],
  ["channel3", "online"],
  ["channel1", "online"],
  ["lot more"]....
]
原始结果的预期结果需要是:

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

for(原始数据库中的var键){
var i;
对于(i=0;i
将数组转换为JSON对象,并执行循环以获取计数。

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

var counts = {};

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

我不知道javascript中是否有GROUPBY、ORDERBY,但您可以做什么来创建一个新数组并检查是否设置了通道索引。如果已设置,则将其递增。如果未设置,且状态为在线,则将其设置为1,否则设置为0

var original_db = [
  ["channel1", "online"],
  ["channel2", "offline"],
  ["channel3", "online"],
  ["channel1", "online"]
];

var ordered_arr = {};

for(var i=0;i<original_db.length;i++)
{

 if(ordered_arr[original_db[i][0]])
    ordered_arr[original_db[i][0]]+=1;
 else
   if(original_db[i][1] =="online")
    ordered_arr[original_db[i][0]]=1;
   else
     ordered_arr[original_db[i][0]]=0;
}

console.log(ordered_arr);
var-original\u-db=[
[“频道1”,“在线”],
[“频道2”,“离线”],
[“渠道3”,“在线”],
[“频道1”,“在线”]
];
var有序_arr={};

对于(var i=0;iWhy do you need JSON?只需使用普通Javascript对象。请展示您的尝试。我们不是来帮您完成工作的,但我们很乐意帮助您解决代码中的问题。请在问题中发布代码,使其可读。注释中没有格式。请参阅编辑部分,我在那里尝试了两个loop但是如果有多少个通道,这对计数没有帮助。你的循环会把所有的东西都拼接出来,因为有时候
key==i
final = [];
for (var key in counts){
    final.push([key, counts[key]]);
}
var original_db = [
  ["channel1", "online"],
  ["channel2", "offline"],
  ["channel3", "online"],
  ["channel1", "online"]
];

var ordered_arr = {};

for(var i=0;i<original_db.length;i++)
{

 if(ordered_arr[original_db[i][0]])
    ordered_arr[original_db[i][0]]+=1;
 else
   if(original_db[i][1] =="online")
    ordered_arr[original_db[i][0]]=1;
   else
     ordered_arr[original_db[i][0]]=0;
}

console.log(ordered_arr);