2017-10-10 4 views
0

이 배열은 [1,1,1,1,2,2,2,3,3]이고 jQuery를 사용하여 [1,2,3,1,2,3,1,1]으로 변환하고 싶습니다. 나는 아무 코드도없고 어떻게이 일을 할 수 있는지 모른다.jQuery 정렬 순서 값의 배열

+0

당신은 배열 정렬에 어떤 연구를 했는가? – evolutionxbox

답변

12

동일한 그룹 배열에 대해 해시 테이블이있는 임시 개체를 사용하여 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; }