2016-03-31 6 views
0

google appsスクリプトエディタで次のコードを実行します(コード自体は意味のあるものではありません)。私がコードを実行すると、正常に動作します。しかし、forループでブレークポイントを設定してデバッグモードで実行すると、最初のループでブレークポイントが実行されます。しかし、2番目のループでは、 "TypeError:オブジェクト1.2.3.4.5.6では関数findIndexが見つかりません"というようなものがあります。なぜこれが起こるのですか?私は何か悪いことをしますか?forループにブレークポイントを設定すると、配列のプロトタイプを使用してエラーが発生します

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; 
} 

ありがとうございます!

+0

同じエラーが発生しました。配列 'items'は内部に関数を持っていません。関数オブジェクトを持たない配列内の関数を参照しようとしています。 –

答えて

0

これは、あなたが欲しいものを行います。

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); 
    } 
} 

私は内側の関数に配列を渡しています。

+0

それで、問題は自分自身でa​​rray.prototypeを定義していました。関数findIndexは、内部関数である必要はありません。あれは正しいですか? –

+0

'findIndex()'関数を外に置くことができます。 –

関連する問題