2015-09-25 3 views
-4

Я ищу быстрое решение, чтобы вернуть значение в цикле с использованием переменнойвозвращаемого значения переменного цикла с Javascript

Существует базовый код

var origins = [ 
    {level: '1', hp: 5600}, 
    {level: '2', hp: 7600}, 
    {level: '3', hp: 9600} 
]; 

var text1 = ""; 
var text2 = ""; 

for (var key in origins) { 
     if (origins.hasOwnProperty(key)) { 
     text1 = origins[key].level; 
     text2 = origins[key].hp; 
     } 
    } 

Я пытаюсь вызвать переменный цикл

console.log(text1 + " " + text2) 

Это дало мне выход, который я не хотел:

3 9600 

Я ищу освобожденной результат вывода будет выглядеть так:

1 5600 
2 7600 
3 9600 

EDIT: Существует JSfiddle

http://jsfiddle.net/mttweck6/2/

+1

ты поставил console.log в петлю или вне контура – NendoTaka

+1

вне цикла – Ivan

+4

положить его в петлю – NendoTaka

ответ

4

Вы должны поместить console.log в петлю или добавить к одной текстовой переменной, как final. Ниже

var origins = [ 
{level: '1', hp: 5600}, 
{level: '2', hp: 7600}, 
{level: '3', hp: 9600} 
]; 

var text1 = ""; 
var text2 = ""; 
var final = ""; 

for (var key in origins) { 
    if (origins.hasOwnProperty(key)) { 
     text1 = origins[key].level; 
     text2 = origins[key].hp; 
     final += "Level: " + text1 + '\n' + "HP: " + text2 + '\n'; 
    } 
} 





//I need to get external variable that would exeute in loop 
alert(final); 



//Excepted Result as one alert with output: 
//Level 1: 5600 
//Level 2: 7600 
//Level 3: 9600 
+0

По какой-то причине я не могу добавить внутри цикла, посмотрите \t http://www.jsfiddle.net/ mttweck6/2 – Ivan

+1

https: // jsfiddle.net/mttweck6/6/посмотреть, дает ли это вам какие-либо идеи, будет продолжать работать над ним, хотя – NendoTaka

+1

Также внутри цикла работает для меня http://jsfiddle.net/mttweck6/7/ – NendoTaka

2
var origins = [ 
    {level: '1', hp: 5600}, 
    {level: '2', hp: 7600}, 
    {level: '3', hp: 9600} 
]; 

var text1 = ""; 
var text2 = ""; 

for (var key in origins) { 
    if (origins.hasOwnProperty(key)) { 
    text1 = origins[key].level; 
    text2 = origins[key].hp; 
    console.log(text1 + " " + text2); 
    } 
} 

Edit: Если вы хотите, чтобы сохранить результаты в виде целой строки

var origins = [ 
    {level: '1', hp: 5600}, 
    {level: '2', hp: 7600}, 
    {level: '3', hp: 9600} 
]; 

var text1 = ""; 
var text2 = ""; 
var result = ""; // String to print 

for (var key in origins) { 
    if (origins.hasOwnProperty(key)) { 
    text1 = origins[key].level; 
    text2 = origins[key].hp; 
    result += text1 + " " + text2 + "\n"; 
    } 
} 

alert(result); 

Если вы хотите, чтобы отобразить это в HTML каждый на свою собственную линию, просто заменить result += text1 + " " + text2 + "\n"; с result += text1 + " " + text2 + "<br>"; и alert(result); с document.getElementById("myelem").innerHTML = result;

+0

Что делать, если я получаю эти переменные text1 и text2 в содержимое HTML? взгляните на \t http://www.jsfiddle.net/mttweck6/2 – Ivan

+1

Предполагаю, вы имеете в виду отображение или печать их всех сразу. Если это так, я обновил свой ответ соответственно. –

+0

Это сработало! извините, кажется, хаос, я бы дал оценку вашему ответу, как принято, но я должен отметить на первом месте. нет К сожалению, не обижайся .. – Ivan

3

Я думаю, что это может помочь вам:

var origins = [ 
{level: '1', hp: 5600}, 
{level: '2', hp: 7600}, 
{level: '3', hp: 9600} 
]; 

var text1 = ""; 
var text2 = ""; 
var s= ""; 

for (var key in origins) { 
    if (origins.hasOwnProperty(key)) { 
     text1 = origins[key].level; 
     text2 = origins[key].hp; 
     s += '\n' + "Level " + text1 + ": " + text2; 
    } 
} 

позже сделать alert(s);

+0

Это дало мне выход, когда я использую «окончательный» переменная : не определено не определено не определено не определено не определено не определено – Ivan

+1

Попробуйте другое имя, окончательное должно быть зарезервированный. – Benoit

+0

http://jsfiddle.net/mttweck6/2/ – Ivan

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