javascript - 具有匹配值的 jQuery 动态数组

标签 javascript jquery arrays

我的 jQuery 对象中有以下数据:

Group - Rank - Value

A - 1 - 200
B - 2 - 200
C - 3 - 200
D - 3 - 500
E - 3 - 600
F - 3 - 400
G - 4 - 100
H - 4 - 300

我正在尝试在 jQuery 中创建一个循环,它可以为我提供下面数组中的输出:

var groupsArray = [];

{
"Rank" : 1
"Total": 200
"TotalRows": 1
},
{
"Rank" : 2
"Total": 200
"TotalRows": 1
},
{
"Rank" : 3
"Total": 1700
"TotalRows": 4
},
{
"Rank" : 4
"Total": 400
"TotalRows": 2
}

我从过去两天开始就在尝试这个,但找不到任何方法来实现这一目标。我尝试使用 for 循环,但以多个 for 循环(一个循环)结束,这影响了性能:

for(var i=0; i<ds.data.length(); i++)
{
   for(var j=0; j<ds.data.length(); j++)
   {
      if(ds.data(j).GridCell.Rank == i)
      {
           //Create or edit array
      }
   }
   //Add the values to groupsArray
}

我也尝试过使用“each”函数,但找不到实现上述逻辑的正确方法。

请求所有专家帮助在 jQuery 中以最少的循环次数和提高的性能实现上述目标。

最佳答案

您可以使用简单的 for 循环来实现此目的。希望这对您有帮助!

 var data = [{ group: 'A', rank: 1, value: 200 }, { group: 'B', rank: 2, value: 200 }, { group: 'C', rank: 3, value: 200 }, { group: 'D', rank: 3, value: 500 }, { group: 'E', rank: 3, value: 600 }, { group: 'F', rank: 3, value: 400 }, { group: 'G', rank: 4, value: 100 }, { group: 'H', rank: 4, value: 300 }];
    var result = {};
    for(let i = 0; i < data.length; i++) {
        let row = data[i];
        if(!result.hasOwnProperty(row.rank)) {
            result[row.rank] =  { rank: row.rank, total: 0, totalRows: 0 };
        }
         result[row.rank].total += row.value;
         result[row.rank].totalRows++;
    };
    Object.values(result);

关于javascript - 具有匹配值的 jQuery 动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58465103/

相关文章:

javascript - 使用 "enter"动态更改按下的按钮

javascript - 根据选择启用/禁用输入 (jQuery)

javascript - 'this' 返回数组而不是字符串。 JavaScript

javascript - 使用数学运算符循环对字符串数组(内部有数字)执行数学运算

javascript - 在 GridFS、express、mongoDB、node.js 中存储来自 POST 请求的数据流

javascript - 用于 jQuery/Javascript 的现代 KVO 库?

javascript - 如何更改 typescript 中的CSS样式?

javascript - 如何使用这个 jQuery 来影响 css 不透明度

jquery - 使用 jQuery 增加每个风景图像的大小

arrays - 编写一个接受函数列表的变量