JSFiddle - React, Tailwind, and code Playground

JavaScript

var wordBreak = function(s, wordDict) {
   return canWordBreak(s, 0, wordDict);
};


const dp = {};

const canWordBreak = (word, index, wordDict) => {
  if (index === word.length) {
    return dp[index] = true;
  }
  if (dp[index] !== undefined) {
    return dp[index];
  }
  for (let breakIndex = index + 1; breakIndex <= word.length; breakIndex++) {
    if (wordDict.indexOf(word.substring(index, breakIndex)) > -1 && canWordBreak(word, breakIndex, wordDict)) {
      return dp[index] = true;
    }
  }
  return dp[index] = false;
}

console.log(wordBreak("catsandog", ["cats","dog","sand","and","cat"]));