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);