Javascript依赖于对表列进行排序
Javascript dependently sort table columns
假设我有以下数据集
Company S1 S2 S3
Apple.com 0.40 0.28 1.00
Google.com 0.30 0.58 0.99
假设上面是在一个HTML表中。
我已经设法弄清楚了如何分别对S1、S2和S3进行排序。然而,我很想知道如何将它们分组。
- 如果我从S1的最高到最低排序。苹果应该处于领先地位
- 如果im从最高到最低对S2进行排序。谷歌应该处于领先地位
- 如果我根据S1和S2进行排序,谷歌应该会名列前茅,因为他们的平均水平更高
- 最后,如果我根据S1和S3进行排序,苹果应该更高。。。。这个原始数据是从数据库中提取并使用PHP填充的。我理解我可以在PHP中执行此逻辑,但是,我希望用户能够动态重新排序列表*
有jQuery/Javascript的方法吗?编辑:
注意这一点。
按下按钮时,作者会对每一列进行排序。但是,我希望能够"检查"两列,并按它们的平均值进行排序。
第2版:
我想选择n个列进行平均。其中n是[1..infinity].的元素
只想在上面高高的。也就是说,不需要反向排序。
我认为这样的东西可以做到,基于对普通对象的排序,如果你可以将其返回到你的表中:
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
相关文章:
- 依赖于缓慢加载javascript的UI
- 如何隐藏&使用jQuery禁用依赖于另一个字段值的字段
- Node.js中依赖于版本的类型继承
- 如何使AngularJS控制器依赖于通过ajax加载在rootScope上的值
- 如何使用EnquireJS使AngularJS范围变量依赖于媒体查询
- Ajax xml源解析依赖于jQuery的点击操作
- Sails.js日志传输依赖于环境
- 如何使用 2 个 XMLHttpRequest 一个依赖于另一个
- Javascript表单.使一个条目依赖于另一个条目
- 在<p>标签依赖于<选择>标签,javascript
- Angularjs-uib日期选择器中的customClass依赖于promise
- 试图使一个事件依赖于另一个事件,并使用jquery自定义事件传递数据
- 使用jquery如何自动删除下拉列表中的第一个空白选项(如果它依赖于另一个选项)
- yii2:依赖于Action的条件显示/显示字段
- 测试依赖于另一个指令Angularjs的指令
- 创建一个不依赖于Snap实例的组
- 屏幕依赖于菜单切换,并在javascript中自动打开
- Colspan修改依赖于CSS3@media查询
- 回调函数的参数如何依赖于排序
- Javascript依赖于对表列进行排序