2015-04-24 5 views
-1

Я пишу JavaScript для того, чтобы взять массив из 9 чисел из 1 - 9, которые вышли из строя, и вернуть обратный отсчет от 10 до 1 в виде строки.JavaScript Countdown Loop

Например:

Входной сигнал: [4, 9, 3, 10, 6, 8, 2, 7, 1, 5];

Выход: "10 9 8 7 6 5 4 3 2 1 лифт!"

Test JavaScript:

Test.assertEquals(liftoff([2, 8, 10, 9, 1, 3, 4, 7, 6, 5]),"10 9 8 7 6 5 4 3 2 1 liftoff!") 

JavaScript код:

function liftoff(instructions){ 

    var countdown = ""; 
    var start = 10; 

    for (start; start >= 1; start--) { 

    for (var i = 0; i < instructions.length; i++) { 

     if (instructions[i] == start) { 
     var count = instructions[i].toString(); 
     countdown += count + " "; 
     } 

    } 

    } 

    countdown += " liftoff!"; 
    console.log(countdown); 
} 

Ошибка я получаю:

Expected: 10 9 8 7 6 5 4 3 2 1 liftoff!, instead got: undefined 

Почему неопределенными?

+0

Что 'инструкции = Liftoff [4 , 9, 3, 10, 6, 8, 2, 7, 1, 5] 'означает? – ruakh

+0

В чем вопрос? Вы когда-нибудь называли эту функцию? Любые ошибки? – charlietfl

+0

он, кажется, хочет сортировать массив численно и продолжать отмену в конце его –

ответ

4
function liftoff(instructions) { 
    return instructions 
    // sort into correct order 
    .sort(function(a, b){ 
    return b - a; 
    }) 
    // convert into string with spaces 
    .join(' ') + 
    // add 'lift off! 
    ' lift off!'; 
} 
+0

Не делает QUITE делать то, что сказал OP, поскольку сообщение, указанное в сообщении, составляет 1-9, а отсчет работает от 10 до 1. Но .. . Это также не имеет большого смысла, поэтому я бы дал тот же ответ, который вы сделали. –

0

Вот еще один вариант, чтобы дать вам то, что вы хотите:

HTML

<!DOCTYPE Html /> 
<html> 
    <head> 
     <title></title> 
    </head> 
    <body> 
     <input type="button" value="Countdown" id="btnCountdown"/> 
     <script type="text/javascript" src="theJS.js"></script> 
    </body> 
</html> 

JavaScript

var countdown = document.getElementById("btnCountdown"); 
var instructions = [5, 3, 2, 6, 4, 1, 9, 7, 8]; 
countdown.onclick = function() { 
    var sortedInstructions = instructions.sort(); 

    for (var i = instructions.length - 1; i >= 0; i--) { 
     var text = document.createTextNode(sortedInstructions[i]); 
     var el = document.createElement("P"); 
     el.appendChild(text); 
     document.body.appendChild(el); 

     if (i == 0) { 
      var liftOff = document.createTextNode("Lift Off!"); 
      var lastEl = document.createElement("P"); 
      lastEl.appendChild(liftOff); 
      document.body.appendChild(lastEl); 
     } 
    } 
}