jQuery按顺序排序数组值

Sof*_*bal 0 javascript sorting sequence

我有一个像这样的数组[1,1,1,1,2,2,2,3,3],我想将其转换为[1,2,3,1,2,3,1,1]使用jQuery.我没有代码也不知道我该怎么做.

Nin*_*olz 23

您可以通过使用具有相同组数组的哈希表的临时对象来使用map进行排序.从中获取已使用数组的长度作为排序组.

排序发生在组和索引中.

结果与已排序的临时数组的索引映射.

var array = [1, 1, 1, 1, 2, 2, 2, 3, 3],
    groups = Object.create(null),
    result = array
        .map((value, index) => ({ index, group: groups[value] = (groups[value] || 0) + 1 }))
        .sort((a, b) => a.group - b.group || a.index - b.index)
        .map(({ index }) => array[index]);

console.log(...result);
Run Code Online (Sandbox Code Playgroud)
var array = [1, 1, 1, 1, 2, 2, 2, 3, 3],
    groups = Object.create(null),
    result = array
        .map((value, index) => ({ index, group: groups[value] = (groups[value] || 0) + 1 }))
        .sort((a, b) => a.group - b.group || a.index - b.index)
        .map(({ index }) => array[index]);

console.log(...result);
Run Code Online (Sandbox Code Playgroud)