2011-12-25 121 views
1

如果我定義了一個多維JavaScript數組這樣添加元素多維數組

//var myStack = new Array(3); 
// *** edit *** 
var myStack = {}; 

什麼是一次插入一個價值的最佳方式是什麼?

myStack[1][1][0] = myValue; 

我想讀取數據庫並一次寫入一個值。例如:

myStack[recordNo][1]['FirstName'] = myValue; 
+6

var myStack = new Array(3); *不*定義三維數組,它創建一個具有3個條目的一維數組 – 2011-12-25 18:05:42

回答

0

您可以使用三種for循環,如果要插入的所有值到數組一次:

for (var i = 0; i < 3; i++) { 
    for (var j = 0; j < 3; j++) { 
     for (var k = 0; k < 3; k++) { 
      myStack[i][j][k] = myValue; 
     } 
    } 
} 
6

插入單個值可以通過一行代碼來完成:

myStack[1] = [,[value]]; 

或者,囉嗦的方式:

myStack[1] = []; 
myStack[1][1] = []; 
myStack[1][1][0] = value; 

任何一種方法都會使用多個數組填充數組myStack,最後根據問題的要求設置所需的值。

編輯:至於更新的問題的答覆中,可以使用下列:

myStack[recordNo] = [,{'FirstName': myValue}]; 
+0

我看到問題再次更新。如果沒有任何屬性是真數組,則必須使用'myStack [recordNo] = {1:{firstName:myValue}};'(或者,如果所有鍵都是動態的:'myStack [recordNo] = {}; myStack [recordNo] [a] = {firstName:myValue};')。 – 2011-12-25 20:58:46

0

爲了避免處理一個數組索引每個尺寸(如果你不這樣做可能導致錯誤注意一下),你可以使用push的方法。這使得它更易於閱讀/調試,尤其是當你有尺寸的大量:

// some constants for navigation purpose 
var FIELD_FNAME=0; 
var FIELD_LNAME=1; 
var FIELD_JOB=2; 

// initialize your stack 
var myStack=[]; 

// create a new row 
var row = []; 

var fname = "Peter"; 
row.push(fname); 

var lname = "Johnson"; 
row.push(lname); 

var job = "Game Director"; 
row.push(job); 

// insert the row 
myStack.push(row); 

然後將有可能重複這樣的:

for (var i=0;i<myStack.length;i++) { 
    var row = myStack[i]; 
    var fname = row[FIELD_FNAME]; 
    var lname = row[FIELD_LNAME]; 
    var job = row[FIELD_JOB]; 
} 
1

例如:

var varname={}; 

for (var k = 0; k < result.rows.length; k++) { 
    varname[k] = 
    { 
    'id': result.rows.item(k).id, 
    'name': result.rows.item(k).name 
    }; 
} 
+0

請考慮編輯您的帖子以添加關於您的代碼的作用以及爲什麼它可以解決問題的更多說明。一個主要包含代碼的答案(即使它正在工作)通常不會幫助OP瞭解他們的問題。 – SuperBiasedMan 2015-10-01 16:19:26