2017-01-15 8 views
0

sets[i][j] = initial_sets [i][j];行でUncaught TypeError: Cannot set property '0' of undefinedエラーを返す次のコードをJavascriptで実践しています。アイデアは正しいと思われますが、なぜ私はエラーが発生しているのか理解できません。Javascriptループエラー:キャッチされていないTypeError

var sets = [[],[]]; //Declared this 2D array based on solution in https://stackoverflow.com/questions/16512182/how-to-create-empty-2d-array-in-javascript 
var initial_sets=[[a,b],[c,d],[e,f]]; //2D array 
var i,j; 

//2D array sets is being filled by 2D array initial_sets 
for (i=0; i<initial_sets.length; i++) { 
    for (j=0; j<initial_sets[i].length; j++) { 
      sets[i][j] = initial_sets[i][j]; 
    } 
} 

Iは、1次元配列を作成し、それを別の次元を割り当てることによってUncaught TypeError: Cannot set property '0' of undefined "に転記溶液を試みたが、私はまだ同じエラーを取得します。

+0

を] 'は'未定義です ' –

+0

'initial_sets'は2D配列ですが、 – user2883071

+0

とは何ですか?コードの最終目標? –

答えて

1
var sets = []; 
var initial_sets=[[a,b],[c,d],[e,f]]; 
var i,j; 

for (i=0; i<initial_sets.length; i++) { 
    // check if sets[i] exist. if not push a new emty array to it. 
    if(!sets[i]) sets.push([]); 
    for (j=0; j<initial_sets[i].length; j++) { 
      sets[i][j] = initial_sets[i][j]; 
    } 
} 

、あなたは空の配列でsetsを初期化する必要はありません必要なときに、それはそれらをプッシュします。

0

配列の寸法は同じではありません。

var sets = []; 
var initial_sets=[["a","b"],["c","d"],["e","f"]]; 
var i,j; 

for (i=0; i<initial_sets.length; i++) { 
    var tmp = []; 
    for (j=0; j<initial_sets[i].length; j++) { 
      tmp[j] = initial_sets[i][j]; 
    } 
    sets[i] = tmp; 
} 

OR

var sets = []; 
var initial_sets=[["a","b"],["c","d"],["e","f"]]; 
var i,j; 

for (i=0; i<initial_sets.length; i++) { 
    sets[i] = []; 
    for (j=0; j<initial_sets[i].length; j++) { 
      sets[i][j] = initial_sets[i][j]; 
    }  
} 
+0

はい、それらは両方とも2Dです。 'sets'は' initial_sets'のサイズまで動的に増加します。 – user2883071

+0

@ user2883071 'i == 2 'のとき、' sets [i] 'は未定義です。それは本当に動的に増加しますが、 'sets [2]'の値は 'undefined'です。だから 'sets [2] [j]'は 'undefined 'なので、設定することはできません。 –

+0

お詫び申し上げます。 2D配列を宣言しようとすると、私の混乱が起こったと思います。私は 'var sets = [] [];'のように2D配列を初期化しようとしましたが、 'Uncaught SyntaxError:Unexpected token ' ]; ' – user2883071

0

この試してみてください:あなたはとても `設定sets``で3つのinitial_sets` `における配列だけ2 [2を持​​っている

var sets = []; 
 
var initial_sets=[['a','b'],['c','d'],['e','f']]; 
 
var i,j; 
 

 
for (i=0; i<initial_sets.length; i++){ 
 
    sets[i]=[]; 
 
    for (j=0; j<initial_sets[i].length; j++){ 
 
    sets[i].push(initial_sets[i][j]); 
 
    } 
 
} 
 
console.log(sets);

関連する問題