我的 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/