javascript - 排序当前根据其他参数进行排序。如何根据javascript中的一个特定参数进行排序?

标签 javascript node.js mongodb express

根据参数对数组进行排序时,它会根据另一个参数对数组进行排序。我想忽略该参数并完全根据我的参数进行排序。

我创建了一个辅助函数,它根据我的参数对我的数组进行排序,它的工作方式如下:

例如我有名称和价格,我的数组是这样的

[{名称:“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/

相关文章:

javascript - 应该使用哪个捆绑系统 AMD、CommonJS、ES Module、IIFE、UMD 和 SystemJS

node.js - 从集合中获取多个文档时超出了 Firestore 内存限制

node.js - pm2 --watch 每隔 3 秒记录一次,与配置文件无关

javascript - JQuery insertBefore() 不起作用

javascript - 如何在数组中添加一个对象?

node.js - 访问 Amazon Alexa 控制台 console.log() 内容

python - MongoEngine fieldDoesNotExist错误,但实际上是

json - 使用带有 MongoDB BSON 的 Aeson 的不支持类型 UString

mongodb - 如何在 MongoDB 中创建用户帐户?

javascript - jQuery/Ajax - $.ajax() 将参数传递给回调 - 使用的好模式?