I have an array like this [1,1,1,1,2,2,2,3,3] and I want to convert this into [1,2,3,1,2,3,1,1] using jQuery. I have no code and no idea how can I do this.
[1,1,1,1,2,2,2,3,3]
[1,2,3,1,2,3,1,1]
You could use sorting with map by using a temporary object with a hashtable for the same group array. Take from it the length of the used array as group for sorting.
The sorting happens with the group and index.
The result is mapped with index of the sorted temporary array.
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);
1.4m articles
1.4m replys
5 comments
57.0k users