2017-01-15 19 views
1

はJavaScript:JavaScriptでは配列を取り込む

私は、配列を移入しようとしています。

var blocks = []; 
var blocksCount = 7; 


for (var columnIndex = 0; columnIndex < blocksCount; columnIndex++) { 
    for (var rowIndex = 0; rowIndex < blocksCount; rowIndex++) { 

    blocks[columnIndex][rowIndex] = 'Some Value'; 

    } 
} 

エラーメッセージ:undefined is not an object

動作させるには何を変更する必要がありますか?

+0

は必要がないことを意味しますか? ChromeとNode 6.9.1の両方が 'Can not set undefined'プロパティ '0'を報告します。 – Dancrumb

答えて

2

blocks[columnIndex]は、rowIndexに値を割り当てるときに定義されていません。まだ定義されていないものには値を割り当てることはできません。したがって、最初に定義されていない場合は、columnIndexを空の配列として定義します。あなたは

+0

は' || 'と何ですか? – Timo

+0

これは 'OR'演算子です。つまり、' || 'の左側の値が定義されている場合、' blocks [columnIndex] 'に代入されます。または、その値は右側の値になりますすなわち '[]' – superUser

+0

が素晴らしいです。ありがとう! – Timo

3

blocks[columnIndex]に配列を割り当てる前に、その配列のプロパティに値を割り当てる必要があります。

+0

理由を説明できますか? – Timo

+0

@Timo - '未定義 'のプロパティに何かを割り当てることができないので、 – Quentin

1

var blocks = []; 
 
var blocksCount = 7; 
 

 

 
for (var columnIndex = 0; columnIndex < blocksCount; columnIndex++) { 
 
blocks[columnIndex] = blocks[columnIndex] || []; 
 
    for (var rowIndex = 0; rowIndex < blocksCount; rowIndex++) { 
 
    
 
    blocks[columnIndex][rowIndex] = 'Some Value'; 
 

 
    } 
 
} 
 

 
console.log(blocks);
blocks[columnIndex] = blocks[columnIndex] || []; 

現在、あなたは多次元配列を持っていない、次のように行うことができます。

var arr = []; 
console.log(arr[0]); 

あなたはこの時点で新しい要素を割り当てようとしていますか?

これを克服し、最初のforループステートメント内に多次元配列を作成し、オリジナルのblocks配列内に新しい配列を作成することができます。

次に、両方の値を多次元配列に割り当てることができます。あなたは、配列の作成に関数を渡すためArrayfromコンストラクタを使用することができます

var blocks = []; 
 
var blocksCount = 7; 
 
     
 
for (var columnIndex = 0; columnIndex < blocksCount; columnIndex++) { 
 
    blocks[columnIndex] = []; 
 

 
    for (var rowIndex = 0; rowIndex < blocksCount; rowIndex++) { 
 
    blocks[columnIndex][rowIndex] = 'Some Value'; 
 
    console.log(blocks[columnIndex][rowIndex]); 
 
    } 
 
}

https://jsfiddle.net/ybsdL4q7/

0

。これはforループ:)あなたはこのコードを実行していた

const blockCount = 7; 
 
const block = Array.from({ length: blockCount }, (_, i) => { 
 
    return Array.from({ length: blockCount }, (_, j) => 'Some Value'); 
 
}); 
 

 
console.log(block);

関連する問題