Так как я должен был удалить некоторые элементы из моих массивов, я последовал за несколько кусков коды, найденных в StackOverflow и придумал это:Javascript Array.prototype печатается почти везде
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
По некоторым причинам, однако этот фрагмент кода печатается ВСЕГДА, когда что-то имеет что-то с массивом.
Пример:
этот кусок кода:
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
Scadenza.prototype.init = function() {
this.promemoria = (this.promemoria == "")?("NO"):(this.promemoria);
var gruppo = this.group; // convert array to string.
this.group = "";
for (var i in gruppo) {
if (i != (gruppo.length - 1)) {
this.group += gruppo[i] + ", ";
}
else {
this.group += gruppo[i];
}
}
alert(this.group);
};
Этот фрагмент кода должен преобразовать this.group массива (временно хранятся в переменной «Gruppo») в строку (это совершенно очевидно, я думаю).
Это, конечно, делает его работу значительно, если он не будет, что его предупреждение является:
[НЕОБХОДИМЫЕ ДАННЫЕ] функция (от, до) {вар остальное = this.slice ((to || from) + 1 || this.length); this.length = от < 0? this.length + from: from; return this.push.apply (это, отдых); }
Этот фрагмент код в настоящее время также отправляется в базу данных через запрос AJAX и результат запроса, при желаемой coloumn, это одно:
функции (от, до) {var rest = this.slice ((to || from) + 1 || this.length); this.length = от < 0? this.length + from: from; вернуть это.push.apply (это, отдых); },
Я очень удивлен, что это происходит, но у меня нет абсолютно никакой идеи о том, как это исправить.
При загрузке страницы или нажатии кнопки, которая выбрасывает это событие, при загрузке страницы не было обнаружено никаких ошибок.
Любая идея?
ps: Не уверен, что помогает, но я использую jQuery.
@comments:
Нормальный цикл на самом деле не исправить это:
Scadenza.prototype.init = function() {
this.promemoria = (this.promemoria == "")?("NO"):(this.promemoria);
var gruppo = this.group; // convert array to string.
this.group = "";
for (var i = 0; i < gruppo.length; i++) {
if (i != (gruppo.length - 1)) {
this.group += gruppo[i] + ", ";
}
else {
this.group += gruppo[i];
}
}
alert(this.group);
};
оповещения по-прежнему то же самое.
Возможный дубликат [Почему используется «для ... в» с итерацией массива такая плохая идея?] (Http://stackoverflow.com/questions/500504/why-is-using-for-in-with -array-iteration-such-the-bad-idea) – Bergi
Это не работает ни с обычным циклом, спасибо. – briosheje
Он делает. Возможно, вы не исправили все вхождения циклов 'for in' ... Что содержит' this.group'? Возможно, методы '.toString()' элементов также делают это неправильно. – Bergi