久々にGASコード書いたら、はまったので備忘録のメモです。
下記のコードでうまいこと動作せず、悩んでいました。
原因はindexOfの使い方を誤っていたのと、ブーリアン型になるのでおかしくなっていたという
結論です。
誤コード
function test3(){
const array = ['テレビ','エアコン','洗濯機','冷蔵庫']
const machine = '乾燥機';
if(array.indexOf(machine)){
console.log('yes'+array.indexOf(machine));
}else{
console.log('no'+array.indexOf(machine));
}
}
乾燥機はarrayにないので'no'にいってほしいのですが、'yes'の方にいってしまいます。
結論をいうと//array.indexOf(machine=乾燥機)は-1を返す、-1はブーリアン型
だとtrueということで'yes'になっていたようでした。
0、""(空文字)や null、undefinedはfalseを返すようです。
この上記のコードの場合は
if(array.indexOf(machine))の
箇所が
if(array.indexOf(machine))>=0という事でした。
正コード
function test3(){
const array = ['テレビ','エアコン','洗濯機','冷蔵庫']
const machine = '乾燥機';
if(array.indexOf(machine)>=0){
console.log('yes'+array.indexOf(machine));
}else{
console.log('no'+array.indexOf(machine));
}
}
indexOfより、includesの方が便利だなと思いました。