[英]Push a dimensional array
為什么在第二個示例中答案未定義?
// First var arr = [ [1, 4, 6], ['alex'] ]; var newArr = arr[1]; newArr.push('Peter'); console.log(arr); // Second var arr = [ [1, 4, 6], ['alex'] ]; arr.push([1]['Peter']); console.log(arr);
代碼[1]['Peter']
試圖從數組文字[1]
訪問名為Peter
的鍵。 它是undefined
您的代碼與此等效:
var arr = [ [1, 4, 6], ['alex'] ]; var tempArray = [1]; var tempValue = tempArray['Peter'] // undefined arr.push(tempValue); console.log(arr);
您應該將其更改為: arr[1].push('Peter')
語法[1]['Peter']
並沒有您想象的那樣。 您正在傳遞輸入參數。 它沒有引用將其推入的數組,它是完全獨立的。 因此,您實際上是在告訴JavaScript首先創建一個新數組( [1]
),然后嘗試從其中訪問一個名為“ Peter”的索引( ["Peter"]
),然后將其推入下一個空閑索引中在arr
。 顯然,新數組中不存在“ Peter”索引,這就是為什么它輸出undefined
。
取而代之的是,您必須像這樣編寫它,以便將其推送到現有數組,該數組本身位於arr
索引1
處:
// First var arr = [ [1, 4, 6], ['alex'] ]; var newArr = arr[1]; newArr.push('Peter'); console.log(arr); // Second var arr = [ [1, 4, 6], ['alex'] ]; arr[1].push('Peter'); console.log(arr);
問題是
arr.push([1]['Peter']);
但是包含單個元素1
的數組不具有屬性Peter
。 數組通常不具有非數字屬性( Array.prototype
和Object.prototype
)
您需要做的就是
var arr = [
[1, 4, 6],
['alex']
];
arr[1].push('Peter');
console.log(arr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.