1

燃氣,Array.indexOf(值) - 不給予適當的索引號氣體

Code.gs 
function myFunction() { 
    var sheet2 = SpreadsheetApp.getActivesheet(); 
    var firstset = sheet2.getRange('B1:B10').getValues(); 
    Logger.log(firstset) 
    var found = firstset.indexOf('[re]') 
    Logger.log(found) 
} 

在谷歌電子表格範圍B1:B10,

B1 we 
B2 we 
B3 re 
B4 ef 
B5 ge 
B6 er 
B7 fe 
B8 th 
B9 rg 
B10 pq 

的答案代碼會導致2但是,Log顯示-1(不匹配)。任何幫助

Screenshot of Logger.log

+0

「[相對]」是一個字符串,你的數組不是字符串數組,但:-) –

+0

由於數組的數組.....有沒有辦法做到這一點是這樣,我的意思是從數組數組中獲取索引或將數組數組轉換爲字符串數組 – Vasim

回答

3
在一個簡單的

for循環:

function myFunction() { 
    var sheet2 = SpreadsheetApp.getActiveSheet(); 
    var firstset = sheet2.getRange('B1:B10').getValues(); 
    for(var n in firstset){ 
    if(firstset[n][0]=='re'){break} 
    } 
    Logger.log(n); 
} 
+0

謝謝Serge ...會嘗試,但{break}是否意味着在匹配的情況下停止循環? – Vasim

+1

確實,對於沒有評論過的詳細信息感到抱歉... –

0

如果你把你的數據在一排,不列,該代碼可以通過使用這樣的:

function myFunction() { 
    var sheet2 = SpreadsheetApp.getActivesheet(); 
    var firstset = sheet2.getRange('A1:J1').getValues(); 
    Logger.log(firstset) 
    var found = firstset[0].indexOf('[re]') 
    Logger.log(found) 
} 

indexOf - 只能在一維數組中搜索 - 因此用於我的示例中firstset[0].indexOf('[re]')

.getValues() - 總是返回2維數組,即使只有一行或一列。

0

這是什麼適合我。

這是一個修改後的方法,原來並沒有給我正確的結果。

Array.prototype.findIndex = function(search) 
{ 
    if(search == "") return -1; 
    for(var t = 0; t < this.length; t++) 
    { 
    if(this[t].search(search) >=0) 
    {break} 
    } 
    return t-1; 
} 

USAGE

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
var index = fruits.findIndex("Apple"); 
//"Apple" is located at position 2 in the array. 
Logger.log("Index of 'Apple' is: " + index); 

當使用這種方法來獲取通過名稱的片列的索引,加1的索引使用sheet.getRange( rowIndex,columnIndex)。

var range = sheet.getRange(row, (index+1));