JSFiddle - React, Tailwind, and code Playground

by kon_yu

JavaScript

console.log("aaaa")

const dic = {"コーデ": "服装", "アメカジ": "アメリカ人っぽい"}

const twowords = (word, dic, index, min) => {
  if(index < min || word.length < min){
    return word
  }
  // TODO そもそも1つのメソッドにできそう?
  // TODO 短すぎるときの処理
  const back = word.substr( - index )
  console.log(index)
  console.log(back)
  
  const forward = word.substr(0,word.length - index )
  console.log("前方の単語:"+ forward)
  let rtnStr = ""
  const changedWord = checkDic(back, dic)
  if( changedWord === null){
    return twowords(word, dic, index -1, min)
  } else {
    const changedFrontWord = checkDic(forward, dic)
    if( changedFrontWord === null){
      rtnStr += forward + changedWord
    } else {
      rtnStr += changedFrontWord + changedWord
    }
    return rtnStr
  }  
}


const checkDic = (word, dic) => {
  const changedWord = dic[word]
      if(changedWord !== undefined){
        // TODO: Debub modeでconsole.logを出力する
        console.log("\"" + word + "\"を\"" + changedWord + "\"に変換")
        return changedWord
      } else {
        return null
      }
}

/* 2ワードとも辞書がある */
/* const word = "アメカジコーデ" */

/* 後方のみキーワードがある */
/* const word = "カジュアルコーデ" */

/* 前方のみキーワードがある場合は諦める */ 
/* const word = "アメカジカジュアル" */

/* 両方ともキーワードがない場合 */ 
/* const word = "ウンコカジュアル" */

/* 文字数が短すぎる場合*/ 
/* const word = "うん" */

/* 1ワードで住む場合 */
const word = "アメカジ"

console.log("出力結果: " + twowords(word, dic, 4, 3))