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

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

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

3095閲覧

[nodejs] 配列内値の存在判定が上手く出来ない

VTFLAB

総合スコア15

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2016/06/18 16:11

nodejsでシステム構築をしているのですが
以下の様に配列内に値が存在するかどうかの条件判定で理解が出来ないのでご教授願います

###前提条件
環境:nodejs + express

■各変数定義
MYSQLデータ(ここでは変数をmemberとする)
[データ型:varchar(255) 値:1,2,3,4,5,6]

var my_id = 1;
var tmp1 = MYSQLから取得している値(member);
var members = tmp1.split(",");

###発生している問題
やっている事はカンマ区切りの文字列を配列に変換し、その中に自分のIDが含まれているかの判定ですが
配列内に含まれているのに、含まれていないと判定されてしまいます

if(members.indexOf(my_id) >= 0){ console.log("メンバーです"); }else{ console.log("メンバーではありません"); } 出力: メンバーではありません

###実際に実行したsplit後のmembers変数のconsole.log

コード[console.log("members:" + members)] 出力[members:1,2,3,4,5,6]

JavaScriptを初めてまだ日が浅い為理解出来ません、どうかご教授宜しくお願い致します。

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

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

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

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

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

kei344

2016/06/18 16:21

console.log(members)の結果はどうなりますか?質問文に追加願います。
guest

回答1

0

ベストアンサー

↓のプログラムの実行結果を理解できますか?

a.js

javascript

1var tmp1 = "1,2,3,4,5,6"; 2var members = tmp1.split(","); 3 4var my_id = 1; 5if (members.indexOf(my_id) >= 0){ 6 console.log("メンバーです"); 7} else { 8 console.log("メンバーではありません"); 9} 10 11var my_id_str = "1"; 12if (members.indexOf(my_id_str) >= 0){ 13 console.log("メンバーです"); 14} else { 15 console.log("メンバーではありません"); 16}

実行結果

$ node a.js メンバーではありません メンバーです

split した結果の members は文字列の配列です。

投稿2016/06/18 16:22

katoy

総合スコア22324

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

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

VTFLAB

2016/06/18 16:31

上手く理解出来ません・・文字列では比較できないという事でしょうか? 試しにmy_id側をStringで明示的に文字列としても比較出来ませんでした 文字列の配列という事はつまり私の思っている [1, 2, 3, 4, 5, 6] ではなく "[1, 2, 3, 4, 5, 6]" となっているという事でしょうか?
VTFLAB

2016/06/18 16:36

失礼しました、文字列に変換する処理を盆ミスしていました String(my_id); ← これじゃ意味ない my_id = String(my_id); ← これに今気が付きました 他言語をやっているとこういったミスを招きやすいですね、とても助かりました 有難う御座います
katoy

2016/06/18 21:50

typeof でデータの型を確認するとよいです。 > a = 1 1 > typeof a 'number' > a = "1" '1' > typeof a 'string'
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問