這裏是我正在嘗試做的。 我有類似下面的無法在setTimeout內正確訪問數組元素
var my_array = ['1', '2', '3' ... ,'1000000000000000'];
我想要做的就是創建一批HTML元素的該陣列的每個元素,並自該陣列可包含的元素數量龐大的陣列I試圖執行以下操作,以便瀏覽器不會凍結。
for(var i in my_array)
{
if(my_array.hasOwnProperty(i))
{
setTimeout(function(){
do_something_with_data(my_array[i]);
});
}
}
儘管如此,setTimeout中的my_array [i]沒有它應該的值。
更準確,當我嘗試console.log(my_array[i])
什麼,我得到的是這樣的:
"getUnique" function(){
var u = {}, a = [];
for(var i = 0, l = this.length; i < l; ++i){
if(u.hasOwnProperty(this[i])) {
continue;
}
a.push(this[i]);
u[this[i]] = 1;
}
return a;
}
getUnique是我添加到Array原型只是這樣的功能:
Array.prototype.getUnique = function(){
var u = {}, a = [];
for(var i = 0, l = this.length; i < l; ++i){
if(u.hasOwnProperty(this[i])) {
continue;
}
a.push(this[i]);
u[this[i]] = 1;
}
return a;
};
請問有人可以幫我解決這個問題嗎?
我強烈建議打開工廠函數併爲'i'參數使用不同的名稱。這是非常混亂的閱讀,調試,確實理解不熟悉JS的人比我知道你是。 :-) –
@ T.J.Crowder真的,不知道OP爲什麼接受它。 ; < – Esailija
@ Esailija:它完成了這項工作! :-)(看起來他們的代碼只是一個小小的改變,如果你真的不知道發生了什麼......) –