我正在開發一個項目,它使用了大量的「javascript」。 我有很多「ajax」調用,它總是返回一個「json」數組。 由於有用的原因,我創建了兩個Array對象原型(「in_array」函數和「shuffle」函數)。在數組中的JavaScript原型循環
因爲我做了原型,所有我的「for in」循環都壞了(兩次顯示「undefined」...) 我看着google和stackoverflow,我現在知道我的錯誤。 當然,如果我刪除我的原型,「未定義」就會消失。
但是,我沒有找到我所有的答案。
首先,我看到很多次,使用「for in」循環很糟糕,爲什麼?
我也是在「PHP」或「python」中開發的,並且我喜歡「in」或「foreach」循環。其次,我得到了很多「for in」循環,所以我更喜歡改變我的原型,而不是改變我的循環。把我的原型切換到正常的函數,並保持「for in」循環,這太髒了嗎?
第三,我讀了JQuery可以糾正這個錯誤。我的項目確實有JQuery,解決方案在談論什麼(我只讀過JQuery可以更正此問題,而不是如何)。
謝謝
編輯: 我的原型代碼:
// FONCTIONS ARRAY
Array.prototype.shuffle = function() {
for (var i = this.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var tmp = this[i];
this[i] = this[j];
this[j] = tmp;
}
return this;
}
Array.prototype.in_array = function (needle) {
for(var i = 0; i < this.length; i++) {
if(this[i] == needle)
return true;
}
return false;
}
你是如何定義你的原型的?你怎麼做你的'for .. in'循環?你添加了「hasOwnProperty」檢查嗎? (它跳過原型)。不要在非框架代碼中使用'for'或'for .. in',編寫map函數。 – Halcyon
不,我的目標是嘗試在我的所有循環中不添加任何內容(在我的代碼中獲得了超過50個「in」) – vekah
然後編寫地圖函數 – Halcyon