jQuery sort array value in sequence

后端 未结 1 1007
感情败类
感情败类 2020-12-20 09:27

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

相关标签:
1条回答
  • 2020-12-20 10:18

    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);

    0 讨论(0)
提交回复
热议问题