2015-08-14 24 views
1

我可以使用一點幫助來計算.push如何與Multidimensional Arrays一起使用。我正在撰寫一個簡單的程序,用於從Google Sheets頁面中的單元格收集信息,並自動生成需要更新的列的列表,並向團隊發送電子郵件以查看可見性。我正在從VB.Net轉換回JavaScript,所以我一直想使用VB中使用的方法。我已經閱讀了這裏的幾篇文章,但似乎無法繞過它。我可視化二維數組的方式就像一個電子表格,但在例子中,我發現它與我的相似程度並不高。。多維數組超過兩列推出

[僱員姓名] [狀態] [開始日期]

我看到上面empRec[0,0]empRec[0,1]empRec[0,2]

但在推的例子,我看到empRec.push({"Employee Name", "Status"});

難道我明白,,分離第二個值中的值?是否會增加另一個,,並將值轉換爲第二個值的位置2?

感謝您輸入高級內容。

代碼剪斷

// Extract the users who need review 
for (r=2; r <= eName.length - 1; r++) { 

if (eName[r] != "") { 

    if (eAcceptNDA[r] == "" || eAvailability[r] == "" || eType[r] == "" || eDays[r] == "") { 
    mailRecList[mailRecCount, 0] = eName[r]; 

    if (eAcceptNDA[r] == "") { 
     mailRecList[mailRecCount, 1] = "Needed"; 
    } else { mailRecList[mailRecCount, 1] = "----"; } 

    if (eAvailability[r] == "") { 
     mailRecList.push[mailRecCount, 2] = "Needed"; 
    } else { mailRecList[mailRecCount, 2] = "----"; } 

    if (eType[r] == "") { 
     mailRecList[mailRecCount, 3] = "Needed"; 
    } else { mailRecList[mailRecCount, 3] = "----"; } 

    if (eDays[r] == "") { 
     mailRecList[mailRecCount, 4] = "Needed"; 
    } else { mailRecList[mailRecCount, 4] = "----"; } 

    Logger.log(mailRecList[mailRecCount, 0] + ", " + mailRecList[mailRecCount, 1] + ", " + mailRecList[mailRecCount, 2] + ", " + mailRecList[mailRecCount, 3] + ", " + mailRecList[mailRecCount, 4]); 
    Logger.log(mailRecList.length/5); 

    } 
    mailRecCount += 1; 
} 
    } 

當我運行上面的代碼只返回單行。當前在工作表中有3個值,它只返回最後一個值。 for loop以2開始的原因是因爲前兩個值是表單上的標題信息。

+0

在這一行中:'mailRecList.push [mailRecCount,2] =「Needed」;'你在'push'中使用括號。你不能那樣做。您必須使用括號。我不知道你爲什麼使用賦值運算符。看起來好像你正在試圖向數組中添加元素,就像你爲對象添加一個「key/value」元素對一樣。數組和對象不使用相同的語法。 [鏈接 - JavaScript - 推](http://www.w3schools.com/jsref/jsref_push.asp) –

+0

謝謝。讓我看一看。我認爲這是我以前沒有取代的失敗嘗試的遺留物。我使用了賦值運算符,因爲在之前的語言中是這樣完成的。語言跳躍讓我的大腦困惑。那麼如果我想推到第三列,我會使用'mailRecList(eName [r],「Needed」,「Needed」);'??? – xxSithRagexx

回答

0

您需要構建內部數組,然後將其推送到您的二維數組中。由於這種更新你的代碼片斷所示:

function fillMailRecList() { 
 

 
    var eName =  ['Ignore1', 'Ignore2', 'Fred', 'Bill', 'Sam'] 
 
    var eAcceptNDA = ['',  '',  '',  'Ignore', ''] 
 
    
 
    var mailRecList = [] 
 
    var mailRecListItem = [] 
 
    var mailRecCount = 0 
 

 
    // Extract the users who need review 
 
    for (var r = 2; r < eName.length; r++) { 
 
    
 
    if (eName[r] !== "") { 
 
    
 
     if (eAcceptNDA[r] === "") { 
 
     
 
//  mailRecList[mailRecCount, 0] = eName[r] 
 
     
 
     mailRecListItem.push(eName[r]) 
 
     
 
     if (eAcceptNDA[r] == "") { 
 
      
 
//   mailRecList[mailRecCount, 1] = "Needed" 
 

 
     mailRecListItem.push("Needed") 
 
      
 
     } else { 
 
      
 
//   mailRecList[mailRecCount, 1] = "----"; 
 

 
      mailRecListItem.push("----") 
 
     } 
 
     
 
     // mailRecListItem is a reference to the array that will be used 
 
     // again next time around, so you need to take a new copy of it 
 
     // to keep. This also has the effect of clearing the working array 
 
     // ready for the next loop 
 
     mailRecList.push(mailRecListItem.splice(0, mailRecListItem.length))   
 
     }  
 
    }  
 
    } 
 
    
 
    Logger.log(mailRecList) // [[Fred, Needed], [Sam, Needed]] 
 
}

你可以看到這個運行here