jQuery按顺序排序数组值

时间:2017-10-10 08:34:29

标签: javascript sorting sequence

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

1 个答案:

答案 0 :(得分:21)

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

使用组和索引进行排序。

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

var array = [1, 1, 1, 1, 2, 2, 2, 3, 3],
    groups = Object.create(null),
    result = array
        .map(function (a, i) {
            return { index: i, group: (groups[a] = groups[a] || []).push(a) };
        })
        .sort(function (a, b) {
            return a.group - b.group || a.index - b.index;
        })
        .map(function (o) {
            return array[o.index];
        });


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