2011-04-28 84 views
0

這是一個非常愚蠢的問題,但我只是在這裏畫一個空白......JavaScript的變量聲明

什麼類型的變量聲明是這樣的:

var s1 = [1,2,3,4] 

而且,我怎樣才能構建當這些對象的數量未知時,這是一個來自多個對象的變量。這是我想出來的,這是行不通的。

var s1 = []; 
for(x in data[i].uh) { 
    s1 += data[i].uh[x]; 
} 
+0

這是一個數組。 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array – kjy112 2011-04-28 00:32:51

回答

2
var s1 = [1,2,3,4] 

是使用"Array Literal Notation"

的四個整數數組聲明你並不需要一個循環複製陣列,只需做到這一點:

var s1 = data.slice(0); 

或在您的例子中,你可能會想這樣的:

var s1 = data[i].uh.slice(0); 

瞭解更多關於這裏複製陣列:http://my.opera.com/GreyWyvern/blog/show.dml/1725165

「(0)的方法的裝置的切片,從元素0返回 切片陣列的至 結束。換句話說,整個 陣列。 。瞧,陣列的一個拷貝」

+0

小心使用slice複製數組,因爲它是參考副本而不是值副本。意思是如果你改變一個你改變另一個。 – 2011-04-28 01:48:48

+0

@The_asMan 不,它複製數組。考慮這個代碼: 'var foo = [1,2,3,4,5]; alert(foo [2]);/*返回3 */ var bar = foo.slice(0); 警報(bar [2]);/*返回3 */ bar [2] = 0; 警報(bar [2]);/*返回0 */ alert(foo [2]);/*退貨3 * /' http://www.w3schools.com/jsref/jsref_slice_array.asp – 2011-04-28 11:10:12

1

它聲明瞭一個帶有Array和4個成員的局部變量。

如果要附加到Array,請使用push()方法。

2

這就是所謂的Array,它可以用new Array()來聲明,或者像在你的例子中那樣使用數組的文字[]。您可以使用Array.push()方法(see docs)到一個新值添加到它:

var s1 = []; 
for(x in data[i].uh) { 
    s1.push(data[i].uh[x]); 
} 
+0

哦,哇。好吧,我認爲數組必須用新的Array()聲明。 – 2011-04-28 00:34:26

2

var s1 = [1,2,3,4] 

是一個數組聲明

將元素添加到陣列中,使用push方法:

var s1 = []; 
for(x in data[i].uh) { 
    s1.push(data[i].uh[x]); 
} 
1

這是一個數組。要添加到數組中,您可以使用Array.push()。例如:

var s1 = []; 
s1.push(1); 
s1.push(2); 
2

s1是一個數組,它是一個正確的具有函數的Javascript對象。

var s1 = []; 

是推薦的創建數組的方法。而不是:

var s1 = new Array(); 

(參見:http://www.hunlock.com/blogs/Mastering_Javascript_Arrays

要將項目添加到一個數組使用s1.push(item)因此您的代碼將是:

var s1 = []; 
for(x in data[i].uh) { 
    s1.push(data[i].uh[x]); 
} 

作爲一個方面說明,我不會建議使用for-in,至少不要不檢查hasOwnProperty。