JavaScriptで単語の入力にかかる時間を計算する方法
問題の概要
ここでは、従来のQWERTY配列ではなく、キーが英語のアルファベット順(abcde...)にそのまま並んでいるキーボードを想定します。
問題を解く前に、次の2つの前提条件を設けます。
- 現在、指はインデックス0、つまり「a」のキー上に置かれている。
- あるキーから別のキーへの移動にかかる時間は、それぞれのインデックスの差の絶対値とする。例えば「a」から「k」への移動時間は |0 - 10| = 10 となる。
求められているのは、英語の小文字アルファベットからなる文字列を引数に受け取り、その文字列を入力するのに必要な時間を計算して返すJavaScript関数です。
入力例
例えば、入力文字列が次の場合を考えてみましょう。
const str = 'dab';
出力
const output = 7;
これは、実際に行われるキーの移動が以下のようになるためです。
'a' -> 'd' = 3
'd' -> 'a' = 3
'a' -> 'b' = 1
解決策:サンプルコード
この問題を解くコードは以下のとおりです。
const str = 'dab';
const findTimeTaken = (str = '') => {
let timeSpent = 0;
const keyboard = 'abcdefghijklmnopqrstuvwxyz';
let curr = 'a';
for(let i = 0; i < str.length; i++){
const el = str[i];
const fromIndex = keyboard.indexOf(curr);
const toIndex = keyboard.indexOf(el);
const time = Math.abs(fromIndex - toIndex);
curr = el;
timeSpent += time;
};
return timeSpent;
};
console.log(findTimeTaken(str));
コードの解説
このコードの処理の流れは以下のとおりです。
- 変数 timeSpent で合計入力時間を管理し、初期位置として「a」を設定します。
- 文字列の各文字について、直前のキーと現在のキーのインデックスを indexOf() で取得します。
- Math.abs() を使って2つのインデックスの差の絶対値(=移動時間)を計算し、合計に加算します。
- 現在位置を次の文字に更新しながら、文字列の最後までこの処理を繰り返します。
出力
コンソールに出力される結果は次のとおりです。
7
-
JavaScriptの型キャスト(型変換)とは?String・Number・Booleanの使い方を解説
型キャスト(型変換)とは?型キャストとは、あるデータ型を別のデータ型へ明示的に変換することを指します。JavaScriptでは、以下の3つの関数を使った変換が最も一般的です。String() … 文字列型へ変換Boolean() … 真偽値型へ変換Number() … 数値型へ変換それぞれの関数に値を渡すだけで、簡単に目的の型へ変換できるのが特徴です。JavaScriptで型キャストを行うコード例以下は、JavaScriptで型キャストを行うサンプルコードです。ボタンをクリックすると、値「44」が文字列・数値・真偽値へそれぞれ変換され、結果が画面に表示されます。<!DOCTYPE htm
-
JavaScriptのconstとletの違いを徹底解説!ブロックスコープ変数の基本と使い方
JavaScriptにおけるconstとletの基本const と let は、ES2015(ES6)で導入された変数宣言用のキーワードです。どちらもブロックスコープ(波括弧 { } で囲まれた範囲)に対応しているのが特徴で、関数スコープしか持たなかった従来の var とは異なる挙動を示します。両者の大きな違いは再代入の可否です。letで宣言した変数は後から何度でも値を再代入できますが、constで宣言した変数は再代入しようとするとエラー(TypeError)が発生します。letとconstの主な違い項目letconst再代入可能不可(エラー発生)スコープブロックスコープブロックスコープ宣言時