魔法JS☆あれい 第6話「indexOfなの絶対lastIndexOf」


登場人物

丹生(にゅう)あれい
魔法少女「魔法(マジカル)JS(女子小学生)☆あれい」として活動中。

イテレー太
正体不明の魔法生物。

第1部「ミューテーター・メソッド編」
* 第1話「popでpushした、ような……」
* 第2話「shiftはとってもunshiftって」
* 第3話「もうsortもreverseも怖くない」
* 第4話「fillも、spliceも、copyWithinもあるんだよ」

第2部「アクセサ・メソッド編」
* 第5話「joinなんて、concatなわけない」

indexOf()

イテレー太「この話、別に魔法少女ものっていう設定じゃなくてもいいよね」
あれい「第6話にして我に返ってんじゃねえよこの駄犬」
イ「さ、気を取り直して、今回僕が魔法世界から召喚したデータは……これだ!」

items = [
  'ウォーター', 'ワォーリー', 'ウォ一リ一',
  'ウォーソー', 'ウォーリー', 'ウ才ーリー',
  'ウォーリー', 'チャーリー', 'チャーハン'
];

あ「なんなんだこのデータは」
イ「この配列の中から、『ウォーリー』という文字列が前から何番目にあるのか? を探し出して、returnして敵を倒してよ!」
あ「そしてなんなんだその注文は」
イ「さあ、早く!」
あ「面倒くせえなあ……」

return items.indexOf('ウォーリー');
// 4

イ「配列魔法を使うとウォーリーも簡単に見つかるね!」
あ「ところで、3番目のやつは違うのか?」
イ「あ、あれは伸ばし棒(ー)じゃなくて漢数字の一なんだよ」
あ「まぎらわしいな」
イ「ちなみに、漢字とカタカナが混じってる文字列は、ダブルクリックしても一部しか選択されないよ! みんなもやってみてね!」
あ「何の豆知識だよ」

解説

indexOf() メソッドは引数に与えられた内容と同じ内容を持つ配列要素の内、最初のものの添字を返します。存在しない場合は -1 を返します。

MDNより)

String(文字列)オブジェクトに対するindexOf()メソッドは有名ですが、配列にもほぼ同じメソッドが用意されています。配列内を検索し、指定した値が最初に現れる場所(インデックス)を返します。

lastIndexOf()

イ「ところで、さっきの配列にはもう一つ『ウォーリー』が隠れているよ!」
あ「興味ねえよ」
イ「それじゃあ、今後はさっきの配列を後ろから検索して、『ウォーリー』という文字列が何番目にあるのか? を探し出して、returnして敵を倒してよ!」
あ「データの召喚をサボってんじゃねえよ」
イ「さあ、早く!」
あ「面倒くせえなあ……」

return items.lastIndexOf('ウォーリー');
// 6

イ「配列魔法を使うとどこに隠れてても一発で見つかるね!」
あ「今回は手抜き感が半端ないな」

解説

lastIndexOf() メソッドは配列中で与えられた要素が見つけられた最後の添字を返します。もし存在しなければ -1 を返します。配列は fromIndex から逆向きに検索されます。

MDNより)

配列内を最後から検索し、指定した値が最初に現れる場所(インデックス)を返します。配列内に指定した値と同じものが1つしかない場合は、結果はindexOf() と同じになります。

次回予告

sliceメソッドを使ってまで、君にはコピーしたい配列があったんだろ?
それは間違いなく実現したじゃないか。

第7話 includesのsliceと向き合えますか?