2017-02-17 10 views
0

Column1の値が1でCol7が空(NULL)でないことを確認するには、2D配列全体(OldTable)をループする必要があります。上記の条件が真であれば、current(i)の要素の配列をnewTableにプッシュします。続く...IF文による配列の解析中にエラーが発生しました

var newTable = []; 
    for (var i=1; i<OldTable.length; i++){  
    if(OldTable[i][0]==1 && OldTable[i][7]!==null){ 
     newTable.push(OldTable[i]);  
    }  
    } 

は私が軽減しようとした

TypeError: Cannot read property "0" from undefined. (line 80, file "Code"

...行うにはかなりまっすぐ進むの事のように思えるが、現在はこのエラーにレンガの壁にぶつかるよう JSの私の抜粋ですif文はちょうど...

if(OldTable[i][0]==1){ 

...でもまだ同じエラーです。私はJSにかなり新たなんだ...

Browser.msgBox(OldTable[50][0]); 

使ってうまく配列要素を表示することができるよ ので、誰かが指摘できる単純な愚かな誤りである可能性があります。

UPDATE:名前をシンプルにしようとすると、実際には矛盾する用語で難しくなりました。使用されている変数名を調べて更新しました。

+1

あなたの代わりにあなたのループの内側 'Array'の' newArray'を意味するのですか? –

+0

'配列 'とは何ですか?その適切なタイプの – Rajesh

+0

の 'Array'のチェック90年代以降のすべてのjavascriptエンジンに付属する組み込みのArrayオブジェクトのようなものですか? –

答えて

1

@Massimoのコメントに記されているように、ループを以下のようにi=1からi=0に変更すると、コードが機能するはずです。また、JavaScriptの中のより現代的なツールに対するあなたの欲求を喚起するために、私はES6/ES2015を使用して問題と本質的に同じソリューションを取り上げます。

var myArray = [ 
 
    [1, 0, 0, 0, 0, 0, 0, 'foo' ], // should pass 
 
    [9, 1, 1, 1, 1, 1, 1, 'foo' ], // should fail 
 
    [1, 2, 2, 2, 2, 2, 2, 'foo' ], // should pass 
 
    [1, 3, 3, 3, 3, 3, 3, null  ], // should fail 
 
    [0, 4, 4, 4, 4, 4, 4, null  ], // should fail 
 
    [1, 5, 5, 5, 5, 5, 5, undefined], // should pass 
 
    [1, 6, 6, 6, 6, 6, 6, 'foo' ] // should pass 
 
]; 
 

 
function f1(array) { 
 
    var newArray = []; 
 
    for (var i = 0; i < array.length; i++) { 
 
    if (array[i][0] == 1 && array[i][7] !== null) { 
 
     newArray.push(array[i]); 
 
    } 
 
    } 
 
    return newArray; 
 
} 
 

 
const f2 = array => array.filter(e => e[0] === 1 && e[7] !== null); 
 

 
console.log(f1(myArray)); 
 
console.log(f2(myArray));

+0

はい、ループを '0'から開始し、' .filter'を使用することは良い提案ですが、どのようにして問題を解決しますか? – Rajesh

+0

あなたは伝説です!私の出発価値を変更することは私にとってはうまくいった、もう一つの初心者のエラー。私は間違いなくあなたのサンプルコードを使ってどこに適用できるのかを見極めます。もう一度ありがとう。 – user1488934

+0

@Rajesh、私の答えは実際にOPが得ていたエラーに対処していないように、あなたのコメントは完全に有効です。しかし、OPが「私の」答えが実際に問題を解決することを示唆したので、元の問題であったように思われたのは、もともとマッシモが解決した(元の回答のように)同じコメントでRajeshとMassimo)_、私ではない。とにかく、私はラウンドアラウンドでお手伝いできることをうれしく思います。うまくいけば、ES2015バージョンがインスピレーションを与えます。 –

関連する問題