gpt4 book ai didi

javascript - 如何根据外部条件和对象的属性对数组对象进行排序?

转载 作者:行者123 更新时间:2023-12-02 23:05:20 25 4
gpt4 key购买 nike

我正在使用 lodash.orderBy 方法并尝试像这样对数据进行排序:

我有两个外部排序条件:condition1condition2

const condition1 = 'aa';
const condition2 = 'b';

const datas = [
{ f1: 'aaa', f2: 'b', f3: '2019-01-01' },
{ f1: 'a', f2: 'b', f3: '2019-01-02' },
{ f1: 'a', f2: 'c', f3: '2019-01-08' },
{ f1: 'aa', f2: 'b', f3: '2019-01-08' },
{ f1: 'aa', f2: 'b', f3: '2019-01-09' },
{ f1: 'aa', f2: 'c', f3: '2019-01-07' },
{ f1: 'xxx', f2: 'c', f3: '2019-01-03' },
{ f1: 't', f2: 'd', f3: '2019-01-04' },
{ f1: 'a', f2: 'd', f3: '2019-01-01' },
{ f1: 'aa', f2: 'd', f3: '2019-01-02' },
];

我希望数据按如下方式排序:

  const expect = [
{ f1: 'aa', f2: 'b', f3: '2019-01-09' },
{ f1: 'aa', f2: 'b', f3: '2019-01-08' },
{ f1: 'aa', f2: 'c', f3: '2019-01-07' },
{ f1: 'aa', f2: 'd', f3: '2019-01-02' },
{ f1: 'a', f2: 'b', f3: '2019-01-02' },
{ f1: 'aaa', f2: 'b', f3: '2019-01-01' },
{ f1: 'a', f2: 'c', f3: '2019-01-08' },
{ f1: 't', f2: 'd', f3: '2019-01-04' },
{ f1: 'xxx', f2: 'c', f3: '2019-01-03' },
{ f1: 'a', f2: 'd', f3: '2019-01-01' },
];

排序规则为:

  1. 如果 f1 的值等于 condition1 - 优先级 1,则按 f1 排序
  2. f2排序,如果f1相同,则f2的值应等于condition2 - 优先级2
  3. f1f2 相同时按 f3(desc) 排序 - 优先级 3

优先级 1 最高。

想不通。感谢您的帮助。 javascript的lodash.orderBysort方法,这两种解决方案都可以。

最佳答案

我不确定我是否完全理解您的问题,但在我看来,JavaScript 排序函数与自定义排序函数的结合就是您所需要的。

类似这样的代码(未经测试):

datas.sort(function(a, b) {
if (a.f1 === condition1) {
return a.f1.localeCompare(b.f1);
} else if (a.f2 === condition2) {
return a.f2.localeCompare(b.f2);
} else {
return a.f3.localeCompare(b.f3);
}
});

关于javascript - 如何根据外部条件和对象的属性对数组对象进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57610999/

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