javascript - 排序当前根据其他参数进行排序。如何根据javascript中的一个特定参数进行排序?
问题描述
当根据一个参数对数组进行排序时,它依赖于另一个参数对其进行排序。我想忽略参数并完全根据我的参数进行排序。
我创建了一个辅助函数,它根据我的参数对数组进行排序,它的工作原理如下:
例如我有名字和价格,我的数组是这样的
[{名称:“A”,价格:5},{名称:“A”,价格:70},{名称:“A”,价格:12},{名称:“A”,价格:576},{名称:“C”,价格:300}。{名称:“C”,价格:899},{名称:“B”,价格:12},{名称:“B”,价格:40},{名称: “B”,价格:15}]
对价格进行排序后,我得到: [{name:"A", price:576},{name:"A", price:70},{name:"A", price:12},{name:"A" ,价格:5},{名称:“C”,价格:899}。{名称:“C”,价格:300},{名称:“B”,价格:40},{名称:“15”,价格:12},{名称:“B”,价格:8}]
我希望它忽略名称并仅按价格排序... 899,576,300,70...
这是根据我选择的参数进行排序的辅助函数:
const propComparator = (propName) =>
(a, b) => a[propName] == b[propName] ? 0 : a[propName] < b[propName] ? -1 : 1
我所做的是将项目添加到一个集合中,然后在几个 for 循环完成后将项目添加到集合中,我将它变成一个数组并像这样排序:
let topArray = Array.from(topSet).sort(propComparator('price'));
解决方案
您的代码按我的预期运行:
var topSet = [
{ name: "A", price: 5 },
{ name: "A", price: 70 },
{ name: "A", price: 12 },
{ name: "A", price: 576 },
{ name: "C", price: 300 },
{ name: "C", price: 899 },
{ name: "B", price: 12 },
{ name: "B", price: 40 },
{ name: "B", price: 15 }
];
var propComparator = function (propName) {
return function (a, b) {
return a[propName] == b[propName] ? 0 : a[propName] < b[propName] ? -1 : 1;
};
};
var topArray = Array.from(topSet).sort(propComparator('price'));
console.log(topArray.map(function (a) { return JSON.stringify(a); }).join(",\n"));
推荐阅读
- python - 如何使用列表快速更新大型字典?
- visual-studio-code - 是否可以创建运行特定 gulp 任务的 VS Code 扩展?
- javascript - 传单地图出现破损
- python - 使用Boost交换python和C Numpy Array
- kubernetes - Kubernetes 中的哪个组件负责资源限制?
- python - 使用 .loc(行和列)过滤具有日期时间索引的数据框
- azure - 通过 ARM 使用 Azure 容器实例来创建不确定数量的容器
- jquery - Bootstrap 4.3.0 工具提示与 jQuery UI 1.12.1 冲突
- regex - 尝试在 fail2ban 上使用正则表达式阻止访问者
- c# - 如何从 .NET API 接收图像文件并将其显示在 Dart Flutter 应用程序中?