Значения массива JavaScript [] совпадают с последним добавленным значением - PullRequest
0 голосов
/ 02 мая 2011

предупреждение в forEach печатает значения по мере их вставки, но после forEach все значения в массиве совпадают. Предположим, у меня есть 3 значения успешно вставлены. У меня есть глобальный массив [] где-то в коде, я пытался изменить его внутри функции, но тот же результат, JSTL создает проблему может быть?

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
var jokeArray = [];

                   function ALL(){
                     var object = new Object;
                     var x = new String();
                      <c:forEach var="joke" items="${jokeAllList}">
                           x = '${joke.content}';
                           x = x.replace(/{/g,"\n");
                           x = x.replace(/}/g,"\r"); 
                           object.content = x;
                           object.category = '${joke.category}';
                           object.rate = '${joke.rate}';
                           object.postby = '${joke.postby}';
                           object.votes = '${joke.votes}';
                           object.image = '${joke.image}';
                           jokeArray.unshift(object);
                           alert(jokeArray[0].content);
                      </c:forEach>

why index(s) 0 & 1 & 2 have the same VALUES ? ( Assume there are values and jokeArray.length = 3 )

              alert ( "arr length is " + jokeArray.length);
              alert(jokeArray[0].content);
              alert(jokeArray[1].content);
              alert(jokeArray[2].content);
              alert("done ALL method");

};

alert("done ALL method");

предупрежден, поэтому ошибок нет

Ответы [ 2 ]

0 голосов
/ 02 мая 2011

Вы повторно используете переменную "object", пожалуйста, сделайте

object = new Object();

внутри вашей петли!

0 голосов
/ 02 мая 2011

Я предполагаю, что поскольку var object = new Object; и var x = new String() находятся вне цикла, у вас есть только один объект для каждого, чье содержимое перезаписывается на последующих итерациях цикла (даже если объект был добавлен вмассив он все еще может быть изменен).

Попробуйте переместить эти две строки в цикл.У вас по-прежнему будет одна object переменная JavaScript (из-за того, что JS действительно не поддерживает переменные уровня области видимости), но у вас будет отдельный объект для каждой итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...