2017-08-03 54 views
0
var arr = []; //is a multidimensional array. 
var barr = []; //is a temp array that is dynamically updated 
var key = "key1" 

arr.push(key, barr); 

arr數據推到一個數組二維數組內,現在看起來是這樣的 - >[key, Array(1)]在具體指標

新數據進入barr如何我把別的東西塞進了相同的鍵嵌套數組?

預期的輸出應該是這樣的:[key, Array(2)]

+0

你最後一句不清楚(對同一把鑰匙?)。什麼是預期的輸出?你是否會混淆數組和對象? – Andy

+0

@andy基本上我正在尋找實現這個:'[key,Array(1)]' - >'[key,Array(2)]' – gk103

+0

那麼,你的原始代碼不會產生這樣的結果。它產生'[「key1」,數組[0]]而不是'[「key1」,數組[1]]'。你只是想添加一些東西到數組中嗎? – Andy

回答

2

選項#1:

你可以推到barr數組:

var arr = []; //is a multidimensional array. 
 
var barr = []; //is a temp array that is dynamically updated 
 
var key = "key1" 
 

 
arr.push(key, barr); 
 
console.log(arr); 
 

 
barr.push('key2', 'key3'); 
 
console.log(arr);

barr是對數組的引用,當你推它進入你的arra陣列中實際上在那裏有參考,所以當更新barr你的參考依然存在(和更新)。

選項#2:

可以推入是在第2位的數組的數組:

var arr = []; //is a multidimensional array. 
 
var barr = []; //is a temp array that is dynamically updated 
 
var key = "key1" 
 

 
arr.push(key, barr); 
 
console.log(arr); 
 

 
arr[1].push('key2', 'key3'); 
 
console.log(arr);

+0

'splice'也是一個選項,如果你知道陣列中你想要新元素的位置。 – Andy

+0

@安迪,你是對的 – Dekel

+0

熱潮! @Dekel多數民衆贊成它。我最初嘗試的是類似於option2的東西。我出錯的地方是'arr [1] .push('key2','key3');' – gk103

0

你做這件事的「鑰匙」的方式實際上是數組(索引0),在短短的另一個值。如果你想使用一個字符串作爲鍵,你必須使用一個對象。您可以使用括號語法來設置和獲取屬性。括號語法也適用於數組,但只能使用整數作爲鍵。

var obj = {}; 
var barr = []; 
var key = "key1"; 
obj[key] = barr; 
// barr changed 
obj[key] = barr;