optionElements는 2 차원 배열입니다. 각 요소는 길이가 2 인 배열을가집니다. 정수와 요소입니다. 내가 linkbox라는 선택 목록을 가지고, 그리고 선택 목록에있는 모든 요소를 추가하고 싶습니다. 내가 그들에게 들어가기를 원하는 순서는 중요하며, 각 원소의 수에 따라 결정됩니다. 그것은 가장 작은 것부터 가장 큰 것까지해야합니다.왜이 자바 스크립트 코드에는 무한 루프가 있습니까?
optionElements은 다음과 같습니다 :
[ [5, <option>], [3, <option], [4, <option], [1, <option], [2, <option]]
을 그리고 그 숫자의 순서로 링크 상자에 추가 할 것입니다 그래서 이런 식으로 생각합니다. 그러나 그것은 어떻게되지 않습니다. 그것은 처음으로 무한 루프입니다. 브라우저를 고정시키지 않으려 고 x 제약 조건을 추가했지만 무시할 수 있습니다.
var b;
var smallest;
var samllestIndex;
var x = 0;
while(optionElements.length > 0 && ++x < 100)
{
smallestIndex = 0;
smallest = optionElements[0][0];
b = 0;
while(++b < optionElements.length)
{
if(optionElements[b][0] > smallest)
{
smallestIndex = b;
smallest = optionElements[b][0];
}
}
linkbox.appendChild(optionElements[smallestIndex][1]);
optionElements.unshift(optionElements[smallestIndex]);
}
누군가 내 문제를 지적 할 수 있습니까?
업데이트는이> 기호 while 루프에서 잘못된 그러나 문제의 원인이 아닌 추가하는 것을 잊었다.
그리고 지금은, 생각하면 optionElements 배열에서 항목을 제거하는 것을 의미 할 것을 또는 원하는 효과를 얻기 위해 교대()를 사용할 수 있습니까? unshift()는 요소를 추가합니다. shift() 또는 pop()과 같은 것을 사용하고자 할 것입니다. – weiy
이것은 내 생각으로도 배열에 추가하고 배열이 비어있을 때만 루프가 종료되는 조건이 있다고 생각합니다. 어쩌면 그 사람은 유배기가 팝처럼 끝에서 끝내기로 바뀔 것이라고 생각했을까요? – CodexArcanum
아마도 그는 splice()를 찾고 있었을 것입니까? http://www.w3schools.com/jsref/jsref_splice.asp – Hasturkun