【发布时间】:2016-08-08 11:29:45
【问题描述】:
我有一个包含字符串和数值的对象数组。需要一种自然的排序来处理组合值。 示例:
输入数组:
[
{
key1: '156557_08_315F036D',
key2: 30,
key3: 's' },
{
key1: '156557_08_315F036D',
key2: 10,
key3: 'm' },
{
key1: '156557_08_315F036D',
key2: 10,
key3: 's' },
{
key1: '156557_08_315F036D',
key2: 15,
key3: 's' },
{
key1: '156557_08_315F036D',
key2: 20,
key3: 's' }
]
这里应该按key3+key1+key2格式升序排序,这里只有key2是数字,想自然排序..不是字符串。
输出将是:
[
{
key1: '156557_08_315F036D',
key2: 10,
key3: 'm' },
{
key1: '156557_08_315F036D',
key2: 10,
key3: 's' },
{
key1: '156557_08_315F036D',
key2: 15,
key3: 's' },
{
key1: '156557_08_315F036D',
key2: 20,
key3: 's' },
{
key1: '156557_08_315F036D',
key2: 30,
key3: 's' }
]
arr.sort(function (a, b) {
return (
a.key3 + a.key1 + parseInt(a.key2) >
b.key3 + b.key1 + parseInt(b.key2) ?
1 :
((b.key3 + b.key1 + parseInt(b.key2) >
a.key3 + a.key1 + parseInt(a.key2)) ?
-1 : 0));
});
尝试了key2的toString,但做了字符串排序。
【问题讨论】:
-
好的。你的代码在哪里?
-
添加到问题@str
标签: arrays node.js sorting natural-sort