gpt4 book ai didi

javascript - 按 2 个动态键对数组进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:10 24 4
gpt4 key购买 nike

我有一个这样的数组。我需要编写一个函数来传递任意两个字段并对其进行排序。示例 sort('company_id', 'title') 应首先按 company_id 排序,然后按标题排序。如何为其编写通用函数

这是数组和我的逻辑:

 [ {
id: 11861,
deadline: '01/13/2020',
status: 'printed',
buyer_name: 'Dion Murray PhD'
},
{
id: 11848,
deadline: '12/14/2019',
status: 'published',
buyer_name: 'Dion Murray PhD'
},
{
id: 11849,
deadline: '12/14/2019',
status: 'published',
buyer_name: 'Dion Murray PhD'
},
{
id: 11857,
deadline: '12/22/2019',
status: 'new',
buyer_name: 'Dion Murray PhD'
}

]


sort ( dataToSort, sortField1 , sortField2) {
rawData.dataToSort( (a, b) => (a[sortField1] > b[sortField1]) ? 1 : ((a[sortField2] > b[sortField2) ? 1 : -1)} ```


TIA.

最佳答案

您可以进行适用于数字和字符串的比较

a > b || -(a < b)

并获取所需的属性并链接条件。

sortBy = (key1, key2) => (a, b) =>
a[key1] > b[key1] || -(a[key1] < b[key1]) || a[key2] > b[key2] || -(a[key2] < b[key2])

用法:

array.sort(sortBy('company_id', 'title'));

对于使用任意数量的键,您可以将参数作为数组并迭代该数组,直到回调获得不等于零的值。

const
sortBy = (...keys) => (a, b) => {
var r = 0;
keys.some(k => r = a[k] > b[k] || -(a[k] < b[k]));
return r;
};

用法:

array.sort(sortBy('company_id', 'title', 'status'));

关于javascript - 按 2 个动态键对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59179591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com