对具有相同字符串的一个字符和数字以及日期逻辑进行排序

用户名

一部吸引所有背景的观众观看的假日电影。推动一个坚持多元价值观的时代将经受时间的考验。经验的多样性可以团结所有人,并在充满回声室和Twitter暴民的敌对文化中消除仇恨。一部可以介绍进入新世纪的公开对话的电影。这部电影将是巨大的。

妮娜·斯科茨(Nina Scholz)

您可以先按priority_level分组,然后按检查是否priority_level以数字开头和按进行排序priority_date

const
    hasNumber = s => /^\d+/.test(s),
    input = [{ priority_level: 'P ', priority_date: '1980-02-08T00:00:00.000Z' }, { priority_level: '1 ', priority_date: '2004-06-29T00:00:00.000Z' }, { priority_level: 'C ', priority_date: '2004-06-29T00:00:00.000Z' }, { priority_level: '5 ', priority_date: '2005-02-15T00:00:00.000Z' }, { priority_level: '1 ', priority_date: '2005-02-15T00:00:00.000Z' }, { priority_level: '1 ', priority_date: '2005-02-15T00:00:00.000Z' }],
    result = [...input
        .reduce((m, o) => m.set(o.priority_level, [...(m.get(o.priority_level) || []), o]), new Map)
        .values()
    ].flat();

result.sort((a, b) =>
    hasNumber(a.priority_level) - hasNumber(b.priority_level) ||
    a.priority_date > b.priority_date || -(a.priority_date < b.priority_date)
);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

与lodash

const
    hasNumber = s => /^\d+/.test(s),
    input = [{ priority_level: 'P ', priority_date: '1980-02-08T00:00:00.000Z' }, { priority_level: '1 ', priority_date: '2004-06-29T00:00:00.000Z' }, { priority_level: 'C ', priority_date: '2004-06-29T00:00:00.000Z' }, { priority_level: '5 ', priority_date: '2005-02-15T00:00:00.000Z' }, { priority_level: '1 ', priority_date: '2005-02-15T00:00:00.000Z' }, { priority_level: '1 ', priority_date: '2005-02-15T00:00:00.000Z' }],
    result = _(input)
        .groupBy('priority_level')
        .map(array => array)
        .flatten()
        .sortBy([
            o => hasNumber(o.priority_level),
            'priority_date'
        ])
        .values();

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据第一个字符对字符串进行排序

对字符串列表进行排序以显示具有特定子字符串的第一个字符串,然后按排序顺序显示剩余的字符串

在具有一些NULL字符串的字符串排序数组中找到一个字符串

如何使用内置的“排序”程序同时按两个字段(一个数字,一个字符串)进行排序?

字符串是否具有与另一个字符串相同的子字符串,则返回TRUE

字符串不包含另一个字符串,而是具有相同长度的字符串

检查一个字符串是否具有另一个字符串的所有字符

根据另一个字符串的顺序对一个字符串进行排序

(javascript) 如果你有一个字符串,它是一个以数字结尾的单词。如何在单词和数字之间添加空格?

如何检查一个字符串是否具有多个相同的匹配组?

在Java中分别打印在一个字符串中给定的字母和数字

通过子字符串计数排序一个字符串?

Python:根据另一个字符串对相似字符串列表进行排序

具有一个字符串和一个字符串列表的相似性API

选择列表中出现频率最高的字符串,如果 'n' 个字符串具有相同的频率计数,则按字母顺序比较每个字符串的第一个字母

我想在日期字符串中的 T 之前有一个字符串

如何对从第一个字符开始的字符串数组进行排序?

如何基于R中的最后一个字符对字符串向量进行排序

SQLite按字符串中的最后一个字符对行进行排序

如何根据由第一个字符串组成的第二个字符向量对字符向量进行排序?

如何根据用户的要求设置多个字符串?然后对它们进行排序并放入一个字符串数组?

将一个字符串作为一个变量与一个字符进行连接与将一个字符串与另一个字符串进行连接时有什么区别?

Java 8:将字符串数组转换为具有大写和排序顺序的第一个字符

对多个字符串进行操作以生成一个字符串

如何检查一个字符串的数字大于另一个字符串的数字?

sed命令将具有特殊字符的字符串替换为具有特殊字符的另一个字符串

如何在此之后提取第一个字符和数字,直到在字符串中找到一个字符(az)-C#2.0

如何在字典中对 KeyValue 进行排序并返回一个字符串

根据另一个字符串数组对对象数组进行排序