2016-10-21 2 views
-4

매우 빠른 질문입니다. 배열을 특정 값으로 정렬하고 항상 가운데에 배치하고 싶습니다. 예를 들어 ... 내 배열 인 경우 :배열을 값순으로 정렬하고 중간에 넣기

myarr = [1,2,3,4,5]; 

기능 middlelizeArr (인 myArr, 2)해야 날이 배열 반환

result [5,1,2,3,4] 

을, 심지어 배열

의 경우에 가장 좋은 조건을 찾아
myarr = [1,2,3,4,5,6,7,8]; 

result [7,8,1,2,3,4,5,6]; 

어떻게하면됩니까? 누군가 나를 도울 수 있니?

+2

당신이 무엇을하려고 않은 :이 방금 myArray.middlelize(2);은과 같이 할 것

말할 수까요? – epascarello

+0

왜 이것을하고 싶습니까? – nicovank

+0

1) 도움을 요청하기 전에 시도한 것을 보여줄 필요가 있습니다. 2) 코드를 생각조차하지 마십시오. 상상해보십시오. 각 조각에 숫자가 적힌 종이 조각이있는 양동이가 있다고 가정 해보십시오. ** 당신은 ** 그것을 어떻게 분류합니까? 몇 가지 다른 번호로 그 과정을 시도한 다음 알고리즘을 얻었습니다. 이를 코드로 변환하면 완료됩니다. –

답변

0

은 처음에는 배열의 크기가 있고 중간

에 투입 할 숫자의 위치를 ​​찾을 필요가 , 만약 N = 배열의 크기는 수의 = 위치 리터 당신 중간에 넣고 싶다면 n/2> l이면

이면 시계 방향으로 돌리십시오. 그렇지 않으면 시계 반대 방향으로 돌리십시오.

0

"중간"숫자의 색인을 배열의 길이와 비교 한 다음 동일하게 될 때까지 이동 (및 밀어 넣기)하면됩니다. 나는 그에게 다음과 같은 방법을 구현했습니다

은 :

function middlelizeArray(array, middle) { 
    var goal = Math.trunc(array.length/2); 

    while(array.indexOf(middle) != goal) { 
     array.push(array.shift()); 
    } 
    return array; 
} 

이것은 또한 배열 프로토 타입에 직접 추가 할 수 있습니다.

Array.prototype.middlelize = function(middle) { 
    var goal = Math.trunc(this.length/2); 
    while(this.indexOf(middle) != goal) { 
     this.push(this.shift()); 
    } 
    return this; 
} 
+0

그리고 Obj와 같은 것을 만들고 싶다면? 예를 들면 ... li의 특정 값으로 목록 UL을 주문하고 싶습니다. 따라서 내 구조는 ...

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
이것을 어떻게 주문할 수 있습니까? 이것은 작동하지 않습니다. $ ('ul'). find ('li'). 중간 크기 (7); – user2156006

관련 문제