2016-03-31 5 views
0

numaralı dizide prototip kullanılarak bir hataya neden oluyor. Aşağıdaki kodu çalıştırıyorum (kod, daha büyük kodumun daha basit bir sürümü olduğundan dolayı anlamsız şeyler yapmaz) Google Apps komut dosyası düzenleyicisinde. Kodu çalıştırdığımda, iyi çalışıyor. Ancak, for döngüsünde bir kesme noktası belirlediğimde ve hata ayıklama modunda çalıştığımda, ilk döngü için çalışır. Ancak, ikinci döngüde bir "TypeError: Nesne 1.2.3.4.5.6'da, findIndex işlevinde bulunamıyor" veya benzeri bir şey alıyorum. Bu neden oluyor? Yanlış bir şey mi yapıyorum?For döngüsünde bir kesme noktası ayarlamak,

function myFunction() { 
for (var i=0; i < 5; i++){ 
    var items = [[1,2],[3,4],[5,6]]; 
    var s = items.findIndex(5); 
    Logger.log(s); 
    } 
} 

Array.prototype.findIndex = function(search){ 
    if(search == "") return false; 
    for (var i=0; i<this.length; i++){ 
    for (var j=0; j<10; j++){ 
     var tmp = this[i][j]; 
     if (this[i][j] == search) return {row:i, col:j}; 
    } 
    } 
    return -1; 
} 

Teşekkür ederiz!

+0

Aynı hatayı aldım. 'Items' dizisinin içinde bir işlevi yoktur. İçinde işlev nesnesi olmayan bir dizinin içindeki bir işleve başvurmaya çalışıyorsunuz. –

cevap

0

İstediğin yapar:

function myFunction() { 

function findIndex(search, array){ 
    var tmp; 

    if(search == "") return false; 
    for (var k=0; k<array.length; k++){ 
    for (var j=0; j<array[k].length; j++){ 
     tmp = array[k][j]; 
     if (tmp === search) return {row:k+1, col:j}; 
    } 
    } 
    return -1; 
} 

for (var i=0; i < 5; i++){ 
    var items = [[1,2],[3,4],[5,6]]; 
    var s = findIndex(5, items); 
    Logger.log(s); 
    } 
} 

Ben iç işleve dizi geçiyordum.

+0

Yani, problem kendimi array.prototype tanımlamaktı. FindIndex işlevinin iç işlev olması gerekmez. Bu doğru mu? –

+0

'findIndex() işlevini dışarıda koyabilirsiniz. –