假设我有以下数据集
Company S1 S2 S3
Apple.com 0.40 0.28 1.00
Google.com 0.30 0.58 0.99
让我们说上面是在HTML表格中。
我已经设法弄清楚如何分别对S1,S2和S3进行排序。但是,我很想知道如何分组。
任何jQuery / Javascript方式这样做? 修改
注意this。
作者在按下时对每列进行排序。但是,我希望能够“检查”两列,并按平均值排序。
EDIT2:
我想选择n个列来平均。其中n是[1..infinity]的元素。
只想高高在上。也就是说,不需要逆向排序。
答案 0 :(得分:0)
我认为像这样的事情可以做到这一点,基于对普通对象的排序,如果你可以将它转回到你的表中:
var sortCompanies = function(cols, companies) {
if (!cols || !cols.length) {
companies.sort(function(a, b) {return a.name < b.name ? -1 : a.name > b.name ? 1 : 0});
return companies;
}
companies.forEach(function(company) {
company.sortKey = 0;
cols.forEach(function(col) {
company.sortKey += (company[col] || 0);
});
});
companies.sort(function(a, b) {return b.sortKey - a.sortKey;});
return companies;
};
var companies = [
{name: 'Apple.com', S1: 0.40, S2: 0.28, S3: 1.00},
{name: 'Google.com', S1: 0.30, S2: 0.58, S3: 0.99}
];
sortCompanies(['S1'], companies); //=> Apple, Google
sortCompanies(['S1', 'S2'], companies); //=> Google, Apple
sortCompanies(['S3'], companies); //=> Apple, Google
sortCompanies(['S1', 'S2', 'S3'], companies); //=> Google, Apple