我有一个像[1,1,1,1,2,2,2,3,3]
这样的数组,我希望使用jQuery将其转换为[1,2,3,1,2,3,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; }