2016-12-05 68 views
-2

在下面的代碼中,您會看到它將arrayi識別爲數組 - i。 這個系統是否內置到js中?當我編寫數組(i)而不是arrayi時,我正在執行並且不起作用。然後這個問題超越了所有問題,問你是否可以做iarray,ariray,arrayii或array(i * i)(只是想弄清楚這是如何工作的語法)。JavaScript是這個功能內置到JS?

var array = [] 
 
var arrayAmount = prompt("Select number of array") 
 

 
for (var i = 0; i < arrayAmount; i++) { 
 
    var arrayi = array 
 
    arrayi.push([prompt("Select name for array " + (i + 1)), ["sub-element 1", "sub-elemet 2"], ]) 
 
    console.log(arrayi) 
 
} 
 
console.log(array1)

編輯:我檢查,如果如果在for循環聲明自己的陣列,而不是複製另一個數組的代碼會工作。事實證明,它並沒有工作,並宣佈arrayi陣列,而不是陣列1或陣列2

+1

分配'arrayi = array'所以'arrayi' *是*'array' ...不知道你的要價? –

+0

「玩家」從哪裏來?你喜歡解決'陣列[我]'? –

+0

您的現場演示會引發錯誤:'ReferenceError:player is not defined' – Quentin

回答

0

你混淆了幾個JS概念。我會做一些假設來解釋一些事情,但隨時糾正我,我會調整我的答案。

我相信你的意思是在數組中的特定索引指定值,但你最終做的是創造一個變量arrayi那就是array參考:

var array = []; 
array[1] = "foo"; 
console.log(array); // [undefined, "foo"] 

你做了什麼,而不是爲創建一個參考,這意味着兩個不同的變量名稱將評估相同的對象/數組:

var array = []; 
var reference_to_array = array; 

reference_to_array.push("foo"); 

console.log(array); // ["foo"] 
console.log(reference_to_array); // ["foo"] 

你原來的問題包括:「當我寫陣列(我)也沒有發揮作用,而不是陣列「

答案是:array(i)應該更改爲array[i]使用數組時。

與其修復原始問題,最終創建了新變量。

要修復原來的代碼:

var array = []; 
 
// Added parsing to an integer 
 
var arrayAmount = parseInt(prompt("How many items do you want to add to the array?")); 
 

 
for (var i = 0; i < arrayAmount; i++) { 
 
    // Method 1: directly access the index 
 
    //array[i] = [ prompt("Select name for array " + (i + 1)), ["sub-element 1", "sub-element 2"] ]; 
 
    
 
    // Method 2 (Recommended): push a new element onto the end of the array 
 
    array.push([ prompt("Select name for array " + (i + 1)), ["sub-element 1", "sub-element 2"] ]); 
 

 
    // Log this element 
 
    console.log(array[i]); 
 
}

+0

嗯,這是我之前想要做的事情,然而在這種情況下,我正在製作多個數組(array1 array2 ...),它們都包含單獨的元素。 如果在我上面寫的代碼中運行,它會詢問應該創建多少個數組,然後詢問這些數組的名稱。讓我們通過代碼。 「陣列的選擇號」我輸入2 「爲陣列1中選擇名稱」喬治 「選擇陣列名稱」 凱蒂 的console.log(數組1)[喬治[「子元素1」 ,「sub-elemet 2」],] console.log(array2)[Katie [「sub-element 1」,「sub-elemet 2」],] –

+0

@AlexM。啊哈!那麼,可以創建新的數組並在變量的名稱中使用索引,但是您需要使用'eval()',這是不必要的,也是非常糟糕的代碼。相反,只需使用我的解決方案:你仍然有多個數組,你可以通過'array [i]'調用它們,唯一的區別是你只有一個變量名'array' *(和更安全的代碼!)*。 –

+0

好的,謝謝! 不太瞭解代碼,可能很明顯。 –