2010-08-09 75 views
18

非常簡單的事情,我試圖在JS(將一個數組的值分配給另一個),但不知何故數組bar的值似乎並沒有受到影響。從數組中填充另一個數組 - Javascript

我嘗試的第一件事當然只是bar = ar; - 沒有工作,所以我嘗試手動循環...仍然無法使用。

我不喜歡Javascript的怪癖!請幫忙!!

 

var ar=["apple","banana","canaple"]; 
var bar; 
 
 
for(i=0;i<ar.length;i++){ 
    bar[i]=ar[i]; 
} 
alert(ar[1]); 

而且,這裏是小提琴:http://jsfiddle.net/vGycZ/


(。以上是一個簡化的實際陣列是多維的)

+0

檢查內容:HTTP://www.hardcode。nl/subcategory_1/article_414-copy-or-clone-javascript-array-object – 2010-08-09 07:25:28

+0

你可能已經發現了使用Firefox的Firebug插件指出的語法錯誤(「arr」vs「ar」)。我會盡可能地說,如果沒有它,你無法正確地進行Javascript開發。 – 2010-08-09 07:27:10

+0

我沒有做太多的JavaScript - 並且tbh我從來沒有想過如何使用Firebug :(......指向我的幾個很好的教程? – ina 2010-08-09 08:02:04

回答

42

您的代碼不工作因爲您未初始化bar

var bar = []; 

你也忘記聲明你的i變量,這可能是有問題的,例如,如果代碼在函數中,i將最終成爲全局變量(總是使用var :)。

但是,你可以避開環路,只需使用slice方法來創建你的第一個數組的一個副本:

var arr = ["apple","banana","canaple"]; 
var bar = arr.slice(); 
+4

+1表示切片。 – 2010-08-09 07:28:50

+0

yes切片切片 - btw切片切片適用於多維數組? – ina 2010-08-09 07:31:28

+0

ina:看起來你可以使用一個小技巧!var bar = arr.concat (); – 2010-08-09 07:34:10

3

你有兩個問題:

首先你需要初始化bar作爲數組:

var bar = []; 

然後arrar在這裏:

for(i=0;i<arr.length;i++){ 

然後你會得到提醒你的香蕉:)

+0

yup - 完全是這樣,太習慣了php sloppiness,忘了聲明數組!謝謝你是第一個回答! – ina 2010-08-09 08:01:33

1

您拼錯變量AR 試試這個

for(i=0;i<ar.length;i++){ 
    bar[i]=ar[i]; 
} 
alert(ar[1]); 
+0

yes ty指針 - 這不是實際的代碼,只是殘酷的簡化打字太快了一個jsfiddle – ina 2010-08-09 07:25:39

1

的問題可能在for循環語句中:

for(i=0;i<ar.length;i++){ 
    bar[i]=ar[i]; 
} 
alert(ar[1]); 

您需要修復ar.length而不是arr.length.並且最好將bar初始化爲:var bar = []

1

在您的代碼中,for循環中的變量arr與您的原始數組ar不一樣:您有一個太多r