
[code]

    var array = [
      [_src * _src, _mid * _mid, _dst * _dst],
      [_src, _mid, _dst],
      [1, 1, 1],
      [0, top_z, 0]
    ];
    for (key in array) {
      console.log(array[key]);
    }
    console.log(array);
    
[/code]

上記のコードでforループ内のconsole.logでは数値の配列として表示されるのですが，最後のconsole.logではすべての要素がNaNとなってしまいます．  
なお，_src, _mid, _dst, top_z はすべて数値です．  
arrayは数値の2次元配列として利用したいのですがどうすればよいでしょうか．

この問題の原因，解決策わかる方いらっしゃいましたらご回答よろしくお願いします．


CC BY-SA 3.0
2015-12-14T15:48:38.253
19980
2015-12-15T04:46:35.447
2015-12-14T15:55:19.940
13434
13434
question
javascript
2次元配列にすると要素がNaNになってしまう


**質問文の記述内容でarray自体は2次元の配列として成立しております。  
ですのでそのまま「arrayは数値の2次元配列として利用」が可能です。**

console.logでの表示が出来ないのはこれを実行した環境のせいだとしかいえません。  
この機能の実装時についての経緯は省きますが、  
ブラウザの種類やバージョンによって動作がバラバラです。

基本的にはconsole.log(x)とした場合にxから返ってくる文字列を  
コンソールに出力する動きとなります。  
ですがxを解析表示する独自機能を追加されている場合が殆どです。

質問文には環境が書かれていないので特定はできませんが、  
動作内容を見ると配列を1回だけ展開して、array[n]からそこに入っている  
配列オブジェクトの戻り値を独自解釈してNaNに変換しています。

この「表示」を変えたいのであればブラウザやそのバージョンを変えるか  
自分で文字列を返すように関数を組み込むと良いでしょう。


CC BY-SA 3.0
2015-12-15T04:08:15.380
19998
2015-12-15T04:08:15.380
9262
19980
answer


`array`の宣言時に既に2次元配列と言う点は既に回答があるので別視点から……

> _src, _mid, _dst, top_z はすべて数値です

……と記載されていますが、そうとは思えないです。  
数値の2乗をされていますが、そこに数値は入ってきておりますか？  
undefinedでかけるなどで演算に失敗した場合にNaNになってしまいます。  
第2要素目にオリジナルが入ってるようですので、  
そちらで値がそこにたどり着いているか確認してみてはいかがでしょうか？

ちなみに、ブラウザにもよりますがChromeでは空文字だろうがnullだろうが0扱いしてくれます。  
また、文字列型になってるくらいなら勝手にキャストしてくれます。  
[![sample
code](https://i.stack.imgur.com/8VVsn.png)](https://i.stack.imgur.com/8VVsn.png)


CC BY-SA 3.0
2015-12-15T04:46:35.447
20001
2015-12-15T04:46:35.447
19980
answer