根据参数对数组进行排序时,它会根据另一个参数对数组进行排序。我想忽略该参数并完全根据我的参数进行排序。
我创建了一个辅助函数,它根据我的参数对我的数组进行排序,它的工作方式如下:
例如我有名称和价格,我的数组是这样的
[{名称:“A”,价格:5},{名称:“A”,价格:70},{名称:“A”,价格:12},{名称:“A”,价格:576 }, {name:"C", price:300}.{name:"C", price:899}, {name:"B", price:12}, {name:"B", price:40}, {名称:“B”,价格:15}]
按价格排序后我得到: [{名称:“A”,价格:576},{名称:“A”,价格:70},{名称:“A”,价格:12},{名称:“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"));
关于javascript - 排序当前根据其他参数进行排序。如何根据javascript中的一个特定参数进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53869444/