2014-08-27 7 views
0

Я довольно новичок в javascript, и в последнее время я играю с ним в качестве оператора for. Тем не менее, я задаюсь вопросом. Я узнал, как сделать «за» заявления делать вещи, как если бы это был выход, как это:Javascript: используя оператор for как переменную

for (i = 0; i < 3; i++) { 
console.log(i); 
} 

Но что, если вы хотите установить переменную для всей продукции из «за» заявление ?

var destinationArray = ["town", "areas", "bosses"]; 
var destinationArraySet = 1; 
var i; 

for (i = 0; i < destinationArraySet; i++) { 
console.log(destinationArray[i]); 
} /*the whole thing should be equal to var destination */ 


var userDestinationPrompt = ("Where would you like to go? Available places: " + 
    /* var destination */ 
    + 
    ".").toUpperCase(); 

Чтобы дать немного больше контекста: Я сделать игру, которая позволяет дальнейшие направления, когда адресат, прежде чем очищается. Как только это будет достигнуто, я устанавливаю destinationArraySet на большее значение, а это означает, что больше мест будет записано и помещено после «Доступные места».

Помощь была бы очень признательна! Если есть что-то непонятное, дайте мне знать.

+0

Операция 'for' не имеет« выхода », это не функция. –

ответ

0
var destination = ''; 
var destinationArray = ["town", "areas", "bosses"]; 
var destinationArraySet = 1; 
for (var i = 0; i < destinationArraySet; i++) { 
    destination += destinationArray[i] + '\n'; 
} 
console.log(destination); 
+0

Простой, понятный и рабочий. Мне это нравится! – user3840869

0

Оператор for не имеет «выход», это не функция. Мышление for как функция даст вам проблемы позже. for - это просто оператор, который непрерывно выполняет блок кода внутри. Он не «выводит», или, другими словами, возвращает какое-либо значение.

ли это вместо:

var destinationArray = ["town", "areas", "bosses"], destinationArraySet = 1; 

var userDestinationPrompt = ("Where would you like to go? Available places: " + 
    destinationArray.slice(0, destinationArraySet).join("\n") 
+ ".").toUpperCase(); 

prompt(userDestinationPrompt); 

Демо: http://jsfiddle.net/7c2b9q7m/1/

  • destinationArray.slice(0, destinationArraySet): Режет массив заданной длины.
  • .join("\n"): Присоединитесь к вновь созданному массиву \n s (новая строка), чтобы выполнить по умолчанию значение по умолчанию console.log.
0

Попробуйте это -

var destinationArray = ["town", "areas", "bosses"]; 
var destinationArraySet = 1; 
var i; 
var availablePlaces = ''; 
var separator = ''; 

for (i = 0; i < destinationArraySet; i++) { 
    availablePlaces += separator + destinationArray[i]; 
    separator = ', '; 
} 


var userDestinationPrompt = ("Where would you like to go? Available places: " + 
    availablePlaces + ".").toUpperCase(); 
1

for утверждение не является выражением, поэтому он не имеет возвращаемого значения. Используйте переменную для сбора значений в цикле:

var destination = ''; 
for (var i = 0; i < destinationArraySet; i++) { 
    destination += destinationArray[i] + ' '; 
} 

Конечно, если вы хотите, чтобы сцепить значения в части массива, вы можете использовать метод slice, чтобы получить часть его, то join метода :

var destination = destinationArray.slice(0, destinationArraySet).join(' '); 
+0

'destinationArraySet' - это номер, поэтому вы не можете использовать на нем свойство' length'. – Ben

+0

@Ben: Я уже понял это. :) – Guffa

+0

Пока еще не знаю, как работают методы slice и join, но я буду иметь в виду, хочу ли я построить такую ​​систему в будущем. Спасибо за быстрый ответ :) – user3840869

Смежные вопросы