質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

916閲覧

GASで多次元配列の参照が上手くいかない件

退会済みユーザー

退会済みユーザー

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/12/07 16:49

前提・実現したいこと

簡略化モデル:

maze[
[0,0,0,0,0],
[0,0,0,0,0],
[0,0,0,0,0],
[0,0,0,1,0],
[0,0,0,0,0]]
において、positionを3,3とする。


positionの上下左右2個先の位置について考える(打ち消し線部分)
このモデルでは、北と西は値が0であるという情報がほしい

発生している問題・エラーメッセージ

if文で本来resultに値がはいっているはずなのに、空のままで出力される

該当のソースコード

GoogleAppsScript

1//main.gs 2function main(n) { 3 //初期宣言----------------------------------------- 4 5 n=11; 6 //とりあえずnの値を代入 7 8 var maze = []; 9 var array = []; 10 11 for(var j = 0; j < n; j++) { 12 array.push(0); 13 } 14 //arrayに[0,0,..](0が11個)を代入 15 16 for(var i = 0; i < n; i++) { 17 maze.push(array.slice()); 18 } 19 //mazeに[array,array,...](arrayが11個)を代入 20 21 22 //スタート位置を書き換え----------------------------- 23 24 var start = [random((n - 1) / 2) * 2 + 1, random((n - 1) / 2) * 2 + 1]; 25 //startに[1から9までの奇数,1から9までの奇数]を代入 26 27 maze[start[0]][start[1]] = 1; 28 //2次元配列mazeを書き換え 29 30 var position = [start[0],start[1]]; 31 //現在地を登録 32 33 Logger.log("position:" + position);//position:3,5 34 Logger.log(maze); 35 36 //メインディッシュ--------------------------------- 37 38 var result = check(maze, position); 39 Logger.log(result);//[]空っぽ... 40}

GoogleAppsScript

1//sub.gs 2function random(max) { 3 //0からmax-1までの整数を返却 4 return Math.floor(Math.random() * max); 5} 6 7function check(maze, position) { 8 var result = []; 9 10 if(position[0] - 2 = 1) { //2個先がマップ外かどうか。マップ外(true)なら東側の判定へ 11 } else if(maze[position[0] - 2][position[1]] = 0) { //2個先が0かどうか。0だったらresultに北(便宜上0)をpush 12 result.push(0); 13 } 14 //北側の判定 15 16... // その他の方角の判定 17 18return result;

試したこと

maze[][]に数式を入れるのがだめなのかなと思い、var a = position[0] - 2; maze[a][]のようにしても駄目でした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/03/11 02:11

無事削除リクエスト通りましたお騒がせしました。
guest

回答1

0

ベストアンサー

JavaScript

1function check(maze, position) { 2 var result = []; 3 4 if(position[0] - 2 = 1) { //2個先がマップ外かどうか。マップ外(true)なら東側の判定へ 5 } else if(maze[position[0] - 2][position[1]] = 0) { //2個先が0かどうか。0だったらresultに北(便宜上0)をpush 6 result.push(0); 7 }

このなかのif文の中身

JavaScript

1if(position[0] - 2 = 1)

節子、それ比較演算子やない。代入演算子や
代入してないんだからうまく動くはずがありません。
===に変更してやり直してみてください。

投稿2018/12/07 17:17

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/12/07 17:27

ほんと頼むわ自分...。 解決しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問