Объединяющая строка с номером в Javascript - PullRequest
0 голосов
/ 11 января 2011

Я пытаюсь создать простой калькулятор в Javascript. У меня есть массив с именем выражение chunk[0] = 12 chunk[1] = + (знак "+") chunk[1] = 5

Я использовал цикл for для обхода фрагментов (chunk []) и затем соединял их в одно выражение следующим образом: -

equation = ""; // To make var equation a string

for(i = 0; i <= length; i++)
{
    equation = equation + expression[i];
    alert(expression[i]);
}

alert(equation);

alert(expression[i]) показал значения 12, + и 5. Но оповещение (уравнение) показало 125 (вместо «12 + 5»). Мне нужно, чтобы переменное уравнение было «12 + 5», чтобы потом я мог вызвать eval (уравнение) и получить значение 12 + 5.

Что я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 20 октября 2014

Что ты делаешь не так?У вас есть небольшая опечатка.

Изменить код вопроса с

chunk[0] = 12
chunk[1] = '+'
chunk[1] = 5

на

chunk[0] = 12
chunk[1] = '+'
chunk[2] = 5

И все должно работать.

Почему это работает: Как +, так и 5 присваиваются chunk[1], при этом 5 перезаписывает предыдущее назначение (chunk[1]) +.Это также объясняет, почему отображаемое объединенное значение равно 125

. По порядку первое назначение приводит к коллекции с
членом chunk[0] и содержанием 12

Второе назначение добавляет нового члена и приводит к коллекции с
членом chunk[0], содержимое которого 12
членом chunk[1], содержимое которого +

Третьеназначение перезаписывает 2-го члена и приводит к коллекции с
членом chunk[0] с содержимым 12
членом chunk[1] с содержимым 5

Объединение всехкуски == 125

Желаемая конкатенация == 12+5

0 голосов
/ 11 января 2011

если у вас есть chunk = [ 12, '+', 5];, тогда вы можете сделать var eq = chunk.join(""); и затем передать его в eval

...