【问题标题】:javascript not able to sort complex array [duplicate]javascript无法对复杂数组进行排序[重复]
【发布时间】:2021-01-02 00:27:33
【问题描述】:

我有以下数组要排序。

const input = ["12 - Blue, Red, Orange, Purple", 
"16 - White, Black, Yellow, Blue, Pink",
"14 -  Yellow, Brown, Grey, Maroon, Green",
"20 - Red, Black, Yellow, Peach, Aqua",
"7 - White, Cream, Grey, Green, Magenta" ]

目的是按升序对行进行排序,如第 7 行,然后是第 12 行、第 14 行、第 16 行,最后是第 20 行。这是我尝试过但不起作用的方法

const input = [
  "12 - Blue, Red, Orange, Purple",
  "16 - White, Black, Yellow, Blue, Pink",
  "14 -  Yellow, Brown, Grey, Maroon, Green",
  "20 - Red, Black, Yellow, Peach, Aqua",
  "7 - White, Cream, Grey, Green, Magenta"
]

var x = input.sort(function(a, b) {
  return a[0] > b[0] ? 1 : -1;
});

console.log(x)

如此复杂的数组如何升序排序?

【问题讨论】:

  • input.sort((a,b)=>{ return parseInt((a.split('-')[0]).trim()) - parseInt((b.split('-')[0]).trim()) }) - 假设你的格式( - ) 不会改变。
  • 我认为这看起来并不复杂

标签: javascript node.js


【解决方案1】:

您需要取整数值并按其增量排序。

const
    input = ["12 - Blue, Red, Orange, Purple",
        "16 - White, Black, Yellow, Blue, Pink",
        "14 -  Yellow, Brown, Grey, Maroon, Green",
        "20 - Red, Black, Yellow, Peach, Aqua",
        "7 - White, Cream, Grey, Green, Magenta"
    ];

input.sort(function(a, b) {
    return parseInt(a, 10) - parseInt(b, 10);
});

console.log(input);

颜色排序。

const
    input = ["12 - Blue, Red, Orange, Purple",
        "16 - White, Black, Yellow, Blue, Pink",
        "14 -  Yellow, Brown, Grey, Maroon, Green",
        "20 - Red, Black, Yellow, Peach, Aqua",
        "7 - White, Cream, Grey, Green, Magenta"
    ],
    sorted = input
        .map(s => {
            const [number, colors] = s.split(' - ');
            return [
                number,
                colors
                    .split(/,\s*/)
                    .sort((a, b) => a.localeCompare(b))
                    .join(', ')
            ].join(' - ');
        })
       .sort((a, b) => parseInt(a, 10) - parseInt(b, 10));

console.log(sorted);

【讨论】:

  • 是否需要10?我试过了,它也很好用
  • 谢谢。数字排序后如何按字母顺序对颜色名称进行排序?
  • 这种情况下,需要再次迭代,将item分开并排序。
  • 抱歉,您可以添加到您的代码中吗?请
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多