【问题标题】:Count number of occurences in JSON object using ALASQL使用 ALASQL 计算 JSON 对象中的出现次数
【发布时间】:2021-06-28 15:27:08
【问题描述】:

我正在尝试使用 ALASQL 计算 javascript 对象中某些属性(在我的情况下为 TypeAlarme)的出现次数。 这是我尝试过的

let data = [{DepName: "Dept Test Code Blanc2",TypeAlarme: "BtnEtat 1"},
             {DepName: "Dept Test Code Blanc2",TypeAlarme: "BtnEtat 3"},
             {DepName: "Dept Test Code Blanc2",TypeAlarme: "BtnEtat 2"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 1"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 3"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 3"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 1"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 2"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 1"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 2"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 3"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 3"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 1"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 2"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 1"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 2"},
             {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 3"}];
 
let deptList = alasql('SELECT COLUMN DISTINCT DepName FROM ?',[data]);//List of departments    

let etats = alasql('SELECT COLUMN DISTINCT TypeAlarme FROM ?', [data]);//List of etats

let counts = [];

deptList.forEach((i, dept) =>
{
    let countsByDept = [];
    etats.forEach((j, etat) => 
    {
       let count = alasql('SELECT COLUMN COUNT(TypeAlarme) FROM ? WHERE DepName = ? AND TypeAlarme = ?',
                                                                  [data, dept, etat]);
                countsByDept.push(count[0]);
    });
    counts.push(countsByDept);
});
console.log(counts); // returns [[0, 0, 0], [0, 0, 0]] should be [[1, 1, 1], [5, 4, 5]]

我的目标是计算每个部门有多少个 etats。对于部门“DeptTagWiFi”,我们有 5 次出现“BtnEtat 1”; “BtnEtat 2”出现 4 次,“BtnEtat 3”出现 5 次。对于部门“Dept Test Code Blanc2”,我们有 1 个“BtnEtat 1”、“BtnEtat 2”和“Btn Etat 3”。

【问题讨论】:

  • 我想说的是,在解析 JSON 之前,您无法对 JSON 做任何有用的事情……然后我意识到您的代码中没有 JSON……无论如何……您当前的代码呢?这与你想要它做的有什么不同?此外,鉴于数据,哪个数据是部门“A”以及为什么它有 5 个“BtnEtats” - 你的要求能否更清楚
  • 我添加了更多细节。

标签: javascript json alasql


【解决方案1】:

问题在于 forEach 循环中的无用索引 (i, j)。

let data = [{DepName: "Dept Test Code Blanc2",TypeAlarme: "BtnEtat 1"},
         {DepName: "Dept Test Code Blanc2",TypeAlarme: "BtnEtat 3"},
         {DepName: "Dept Test Code Blanc2",TypeAlarme: "BtnEtat 2"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 1"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 3"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 3"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 1"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 2"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 1"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 2"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 3"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 3"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 1"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 2"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 1"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 2"},
         {DepName: "DeptTagWiFi",TypeAlarme: "BtnEtat 3"}];



let deptList = alasql('SELECT COLUMN DISTINCT DepName FROM ?',[data]);//List of   departments    

let etats = alasql('SELECT COLUMN DISTINCT TypeAlarme FROM ?', [data]);//List of etats

let counts = [];

deptList.forEach((dept) =>
{
    let countsByDept = [];
    etats.forEach((etat) => 
    {
       let count = alasql('SELECT COLUMN COUNT(TypeAlarme) FROM ? WHERE DepName = ? AND TypeAlarme = ?',
                                                                  [data, dept, etat]);
                countsByDept.push(count[0]);
    });
    counts.push(countsByDept);
});
console.log(counts); // returns [[1, 1, 1], [5, 5, 4]] which is correct

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2015-09-04
    相关资源
    最近更新 更多