我正在尝试使用Javascript查看某个字符串是否包含组成另一个字符串的所有字符。
例如,单词“ hello”包含组成单词“ hell”的所有字符。另外,单词“ hellowy”包含组成单词“ yellow”的所有字符。
最重要的是,该方法需要起作用,而与两个字符串中的字符顺序无关。另外,字符数很重要。“ Hel”不包含组成“ hell”的所有字符。这严格地指的是字符的数量:一个单词需要两个l才能使单词“ hell”和“ hel”只有一个。
进一步澄清这个问题,我不担心在从字符串的字符组成子字符串之后是否剩下一些“未使用的”字符。也就是说,“地狱”仍应包含“地狱”一词的所有字母。
我怎样才能有效地做到这一点?也许有一个正则表达式解决方案?速度多少是个问题,但不是绝对关键。
您可以使用every:
every
function test(string, substring) { var letters = [...string]; return [...substring].every(x => { var index = letters.indexOf(x); if (~index) { letters.splice(index, 1); return true; } }); }
Every将在第一个伪造的值中失败,然后不搜索 每个 字母。
Every