【问题标题】:Javascript fetch group total results by keyJavascript按键获取组总结果
【发布时间】:2021-07-28 22:03:19
【问题描述】:

我正在执行 javascript 提取,从 GET 响应返回一个 json,我需要按每个类别(我的键)的出现总数进行分组。 这是我的 json 示例:

[{Id, Var1, Var2, CreationDate},
{1, 123, abc123, 2020-12-11},
{2, 1234, abc123, 2020-12-12},
{3, 12345, abc123, 2020-12-12},
{4, 1234, abc123, 2020-12-13},
{5, 321, cda123, 2020-12-15},
{6, 3214, cda123, 2020-12-15},
{7, 5432, fff123, 2020-12-16},
{8, 5432, fff123, 2020-12-16},
{9, 5432, fff123, 2020-12-16},
{10, 5432, fff123, 2020-12-16},
{11, 5432, ddd123, 2020-12-16},
{12, 5432, ddd123, 2020-12-16},
{13, 5432, ddd123, 2020-12-16},]

我想按键返回结果进行分组,其中键是“Var2”,它是我在数组中的值的一部分。要匹配它只需要包含 listOfVariables 数组中的值之一。 这是我的代码:

var myObj;
var result;
var listOfVariables = [abc, cda, fff, ddd];
fetch('https://blashblashblash.com?listOfVariables')
.then(res=>res.json())
.then(data=>myObj= data)
.then(() =>
    myObj.forEach(function (elem){
        var variable = elem.Var2.includes(listOfVariables);
        if (result[variable ]) {
                result[variable ] += 1;
            } else {
                result[variable ] = 1;
            }
    });
    listOfVariables.forEach(variable => {
            if(!result.hasOwnProperty(variable )) {
                finalResult[variable ] = 0;
            } else {
                finalResult[variable ] = result[variable ];
            }
    });

我得到的最终结果是:

[abc: 0
 cda: 0,
 fff: 0,
 ddd, 0]

但应该是:

[abc: 4,
cda: 2,
fff: 4,
ddd: 3]

我哪里错了?显然,我的代码无法理解变量是否包含作为子字符串的数组 lisrOfVariables 的元素之一。 谢谢

【问题讨论】:

    标签: javascript rest fetch key


    【解决方案1】:
    const result = [];
    const finalResult = [];
    const listOfVariables = ['abc', 'cda', 'fff', 'ddd'];
    
    fetch('https://blashblashblash.com?listOfVariables')
      .then(res => res.json())
      .then((data) => data.forEach((elem) => {
        const variable = elem.Var2;
        const variableInList = listOfVariables.includes(variable);
    
        if (variableInList) {
          result[variable] = (result[variable] || 0) + 1;
        }
      }));
    
    listOfVariables.forEach(variable => {
      finalResult[variable] = result.hasOwnProperty(variable) ? result[variable] : 0;
    });
    

    【讨论】:

    • 谢谢!如果我的 Var2 比 listOfVariables 长,会发生什么?例如 Var2 是“ddd1234”,但 listOfVariables 中的等效元素是“ddd”。由于这个问题,目前一切都失败了
    猜你喜欢
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多