if文で0がfalse扱いになる

0の評価がfalseになって意図した処理ができなかったので、その時の対応方法をメモしておきます。

サンプルコード

やろうとしたことは、特定の文字列が配列内に含まれている場合はそのインデックスを取得して、インデックスを使って何らかの処理を行うというものです。

JavaScript

var str = 'アルルゥ';
var charaArr = ['ハクオロ', 'エルルゥ', 'アルルゥ'];

var count = '';
for (var i = 0; i < charaArr.length; i++) {
	if(charaArr[i] == str) {
		count = i;
	}
};

if(count != '') {
	console.log('値が入っています');
} else {
	console.log('値が入っていません');
}

空文字列を代入した変数を用意しておいて、文字列が配列に含まれる場合はインデックス番号を変数に格納、if文で評価して処理を行います。
対応前のデモページ
 

実装したときには気付かなかったのですが、インデックスが0の場合はif文の評価がfalseになってしまうので、意図した処理になっていませんでした。

JavaScript

var str = 'ハクオロ';
var charaArr = ['ハクオロ', 'エルルゥ', 'アルルゥ'];

var count = '';
for (var i = 0; i < charaArr.length; i++) {
	if(charaArr[i] == str) {
		count = i;
	}
};

if(count != '') {
	console.log('値が入っています');
} else {
	console.log('値が入っていません');
}

対応前のデモページ2
 

対応方法

変数に空文字列を入れておくのをやめて、if文の評価方法を変更しました。

JavaScript

var str = 'ハクオロ';
var charaArr = ['ハクオロ', 'エルルゥ', 'アルルゥ'];

var count;
for (var i = 0; i < charaArr.length; i++) {
	if(charaArr[i] == str) {
		count = i;
	}
};

if(typeof(count) != 'undefined') {
	console.log('値が入っています');
} else {
	console.log('値が入っていません');
}

対応後のデモページ
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年4月
 123456
78910111213
14151617181920
21222324252627
282930