2013-07-11 4 views
1

여기서 내가 잘못되어 가고있는 부분을 이해하려고합니다.배열의 항목 중 6/7을 제거하는 스플 라이스 함수

result = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]  

제 배열의 6 개 항목을 모두 없애고 7 번째 자리를 떠나고 싶습니다. 실제로 배열 내 값의 6/7을 없애기를 바라고 있습니다. splice()가 완벽 할 수 있다고 생각하지만 아래 코드는 어떻게 든 작동하지 않는 것 같습니다. 어떤 제안?

여러분 모두에게 감사드립니다.

function random_select() 
    { 
     for(var i=0; i < result.length; i+7) 
     { 
     result.splice[i,6]; 

     } 
    }; 
+2

문제의 부부 : (a) 배열을 처음부터 끝까지 반복하면서 수정 중입니다. 역순으로 반복해야합니다. (b) 루프 인덱스를 전진시키지 마십시오. 'i + 7'은'i + = 7'이어야합니다. (c)'splice'는 함수로, splice [x, y]가 아니라'splice (x, y)'와 같이 호출해야합니다. –

+0

'i + 1'을'i ++'로 변경하고'result.splice [i, 6]'를'result.splice (i + 1,6)'로 변경합니다. 배열이 변이되고 다시 색인되기 때문에 현재 색인은'.splice()'다음에 오는 다음 항목이됩니다. 그래서 우리는 다음 색인에서 돌연변이를 시작하기 때문에, 현재 색인을 넘어서 다음의'7' 배수로 넘어갈 필요가 있습니다. '0'을 제거해야한다면, 루프 뒤에'result.shift()'를 추가하십시오. * (이전의 코멘트에 대한 재구성) * –

답변

1

대신을 시도해보십시오

var result = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; 
for (var i = 0; i < result.length; i++) result.splice(i, 6); 

이됩니다

  1. 먼저 [0, 1, 2, 3, 4, 5]를 제거하고 [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] 될 수 있습니다.
  2. 다음으로 [7, 8, 9, 10, 11, 12]을 제거하고 [13, 14, 15, 16]으로 지정하십시오.
  3. 마지막으로 [13, 14, 15, 16]을 제거하십시오.

따라서 결과는 [6, 13]입니다. 이게 니가 원하는거야?

+0

안녕하세요, Aadit, Felix와 Train의 제안에 따라이 작업이 완벽하게 완료되었습니다. 감사합니다. – Max