![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
javascriptの引数と返数がよく理解していないのでお聞きします。自分が理想とする値がコンソールされていないことで困っております。下から4行目あたりのconsole.log (tmp);で
name: '名前',
address: '住所',
coordinate: [Number(csvArray1[0]), Number(csvArray2[0])],
discription: "説明"
がコンソールされると思ったのですが、
function createdata(csvArray1, csvArray2) {
tmp = [
{
name: '名前',
address: '住所',
coordinate: [Number(csvArray1[0]), Number(csvArray2[0])],
discription: "説明"
}
];
console.log (tmp[0].coordinate);
return [tmp];
}
まで値がでてしまいます。引数がおかしいのか、返数がおかしいのでしょうか。長文でしたが、ご指摘お願いいたします。
/** csvデータ取り出す */
function mainFunc (callback) {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
callback.apply (null, createArray(xhr.responseText));
};
xhr.open("get", "./csvfile/sample2.csv", true);
xhr.send(null);
}
/** 配列を作成 */
function createArray(csvData) {
var tempArray = csvData.split("\n");
var csvArray = [], csvArray1 = [], csvArray2 = [];
for(var i = 0; i<tempArray.length;i++){
csvArray[i] = tempArray[i].split(",");
csvArray1[i] = csvArray[i][1];
csvArray2[i] = csvArray[i][2];
}
return [csvArray1, csvArray2];
}
/** 位置情報を作成 */
function createdata(csvArray1, csvArray2) {
tmp = [
{
name: '名前',
address: '住所',
coordinate: [Number(csvArray1[0]), Number(csvArray2[0])],
discription: "説明"
}
];
console.log (tmp[0].coordinate);
return [tmp];
}
function loadMap(tmp) {
console.log (tmp);
}
mainFunc(createdata);
loadMap(createdata);
No.1ベストアンサー
- 回答日時:
こんにちは
まずは、ご質問の内容に関して。
>下から4行目あたりのconsole.log (tmp);で
~~
>まで値がでてしまいます。
呼び出されている関数は
>function loadMap(tmp) {
> console.log (tmp);
>}
ですが、呼び出し側は、
>loadMap(createdata);
となっており、この時の引数 createdata は既定義の関数です。
ですので、loadMapがtmpとして受け取るのは関数(そのもの)です。
従って、
>console.log (tmp);
は、
console.log ( createdata );
と同じ意味となり、関数の内容が出力されているということです。
javascriptはオブジェクトベースの言語で、変数には単純な値だけでなく、配列やオブジェクトでも関数(=オブジェクトの一種)やDOMでも同じように代入できます。
例えば、
function a(){ alert("hoge"); }
var b = a;
alert(b);
としてみれば、(試してみればわかりますが)1行目の定義の内容が表示されます。
その他の疑問点
「csvデータ取り出す」、「配列を作成」までは理解ができますが、「位置情報を作成」以降は何をどうしたいのか意図がまったくわかりません。
特に、createdata関数は配列から、オブジェクトの配列を作成するのではないかと想像しますが、返すのは常に同じ値を利用したオジェクトを一つだけ持つ配列をさらに配列化したものに固定されています。
利用しているデータは、csvArray1[0]とcsvArray2[0]だけなので、同じものしか返しません。
というよりも、一旦、配列化してからオブジェクト化するのなら、直接オブジェクト化すれば良さそうなものだと思います。
最終的に、何を得たいのかが不明なので、何ともわかりませんけれど。
前回の質問でも指摘しましたが)tmpは配列であり、return値が [tmp] となっているので、例えば
var obj = createdata(csvArray1, csvArray2);
とした場合に、オブジェクトの"名前"を得るのには、
obj[0][0].name
としなければなりません。
しかも、この配列の添え字は0以外は使えないことになります。(それ以外は未定義)
そもそも論になりますが、元のcsvデータでは、名前、入所、位置などがセットになっているのではないのでしょうか?
それを読み込むのなら、素直にそのまま全体をオブジェクトの属性としてセットするのが普通ではないかと思いますけれど・・・(不要な属性はカットしますが)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- PHP csvファイルについて教えて下さい。 2 2023/04/01 19:59
- JavaScript 定積分の近似値を計算する関数composite_newton_cotesをつくりたい 1 2023/01/18 14:09
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- JavaScript gasについて 1 2022/05/31 21:51
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript 台形公式 2 2022/12/21 18:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
C#テキストボックスの文字を配...
-
undefinedを表示させない方法は...
-
ソートで
-
順列生成アルゴリズムについて...
-
二次元配列を使って順位をだす...
-
どうすればresponseText結果を...
-
jspからjavascriptの変数引継ぎ
-
Wikipedia APIの結果からタイト...
-
配列を作って総当たりで距離を...
-
javascript 変数名の連結をしたい
-
<a>タグのテキストを取得
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
window.openでタイトル名の指定
-
ActiveXobjectが作成できない
-
functionから別のfunctionを実...
-
クリッカブルマップのリンク部...
-
JAVAスクリプトで指定時間以降...
-
Vb.netのグローバル変数の宣言...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じIDで定義した要素の配列を...
-
C#テキストボックスの文字を配...
-
jspからjavascriptの変数引継ぎ
-
javascript 変数名の連結をしたい
-
二次元配列を使って順位をだす...
-
javascriptで行を抽出したいです。
-
javascriptからphpに配列データ...
-
多次元配列から最大値を1行また...
-
Perlの配列をJavaScriptに渡せ...
-
JSONデータを50音順でソートしたい
-
どうすればresponseText結果を...
-
バナーのランダム表示(複数、...
-
JavaScriptでの動的な多次元配...
-
JavaScriptからPHPに配列を渡す...
-
javascript 省略した記述と思わ...
-
【Google Apps Script】コード...
-
javascriptを用いて作成された...
-
[JS] setAttributeで保存される...
-
javascriptで2つのArrayの...
-
配列について、その要素を並べ...
おすすめ情報