Javascript 检查字符串是否包含一组其他字符串

Javascript 检查字符串是否包含一组其他字符串,javascript,arrays,string,for-loop,Javascript,Arrays,String,For Loop,我想检查数组中的字符串1是否包含字符串2中单词的字母。下面是我的示例阵列: ([“地板”、“远”) 函数应返回false,因为“a”不在字符串“Floor”中 但对于这样的阵列: ([“新手”,“网络]) 它应该返回true,因为来自“web”的所有信件都在“Newbie”中 这是我到目前为止的代码 function mutation(arr) { var newArr = []; for (i=0; i<arr.length; i++) { newArr.

我想检查数组中的字符串1是否包含字符串2中单词的字母。下面是我的示例阵列:

([“地板”、“远”)

函数应返回false,因为“a”不在字符串“Floor”中 但对于这样的阵列:

([“新手”,“网络])

它应该返回true,因为来自“web”的所有信件都在“Newbie”中

这是我到目前为止的代码

function mutation(arr) {
    var newArr = [];
    for (i=0; i<arr.length; i++) {
        newArr.push(arr[i].toLowerCase().split(""));
    }
    for (i=0; i<newArr.length; i++) {
        for (j=0; j<newArr[i].length; j++) {
            console.log(newArr[0][j]+ (newArr[1][j]));
    }
  }
}
mutation(["Newbie", "web"]);
功能突变(arr){
var newArr=[];
对于(i=0;i而言,最酷的方式是:

 const mutation =([one, two]) => (set => [...two.toLowerCase()].every(char =>  set.has(char)))(new Set(one.toLowerCase()));
工作原理:

首先,我们将传递的数组分解为第一个字和第二个字:

 [one, two]
既然我们都有了,我们就从第一个单词开始建立一组字符:

 (set => /*...*/)(new Set(one))
生活中所有这些都是因为我们需要这里的场景:

 [...two].every(char => set.has(char))
这将第二个单词分散在一个数组中,因此我们得到了一个字符数组,然后检查是否所有字符都是我们从另一个单词构建的集合的一部分。

最酷的方法是:

 const mutation =([one, two]) => (set => [...two.toLowerCase()].every(char =>  set.has(char)))(new Set(one.toLowerCase()));
工作原理:

首先,我们将传递的数组分解为第一个字和第二个字:

 [one, two]
既然我们都有了,我们就从第一个单词开始建立一组字符:

 (set => /*...*/)(new Set(one))
生活中所有这些都是因为我们需要这里的场景:

 [...two].every(char => set.has(char))

这将第二个单词分散到一个数组中,因此我们得到了一个字符数组,然后检查是否所有字符都是我们从另一个单词构建的集合的一部分。

我认为这应该适合您。将要检查的字母字符串拆分为一个数组。在数组中迭代获取每个字母,并检查传入的字符串是否包含这封信,如果没有,将我们的结果设置为false

function mutation(arr) {
  var charArr = arr[1].toLowerCase().split("");
  var result = true;
  charArr.forEach(element => {
    if (!arr[0].toLowerCase().includes(element)) {
      result = false;
    }
  });
  return result;
}
console.log(mutation(["Newbie", "web"]));

我认为这应该对您有用。将要检查的字母字符串拆分为一个数组。迭代数组以获取每个字母,并检查传入的字符串是否包含字母,如果不包含,则将结果设置为false

function mutation(arr) {
  var charArr = arr[1].toLowerCase().split("");
  var result = true;
  charArr.forEach(element => {
    if (!arr[0].toLowerCase().includes(element)) {
      result = false;
    }
  });
  return result;
}
console.log(mutation(["Newbie", "web"]));

如果要确保一个单词(可能有多个重复字母)包含在另一个单词中,请使用计数字母,然后存储创建字母->计数。对两个单词都执行此操作。使用以下命令检查第一个单词映射中是否包含所有第二个单词:

const countLetters=(w)=>
w、 toLowerCase()
.拆分(“”)
.reduce((r,l)=>r.set(l,(r.get(l)| | 0)+1),newmap();
常数突变=([a,b])=>{
常数=计数字母(a);
常数bl=计数字母(b);

return[…bl]。every([k,v])=>v如果要确保一个单词(可能有多个重复字母)包含在另一个单词中,请使用计数字母,并存储创建字母->计数。对这两个单词执行此操作。使用以下命令检查第二个单词是否全部包含在第一个单词映射中:

const countLetters=(w)=>
w、 toLowerCase()
.拆分(“”)
.reduce((r,l)=>r.set(l,(r.get(l)| | 0)+1),newmap();
常数突变=([a,b])=>{
常数=计数字母(a);
常数bl=计数字母(b);

return[…bl]。使用集合的每个(([k,v])=>v都应该有效。我搜索了一个库,找到了JS.set。如果你将“Newbie”中的所有字母放入集合1,并将“web”中的所有字母放入集合2,那么你的结果就是简单的集合2。isSubsetOf(set1)。或者,检查“web”中的每个字母在“Newbie”中都有indexOf>-1。好的。但是如何使用indexOf()使其有效呢?使用集合应该可以工作。我在谷歌上搜索了一个库,找到了JS.set。如果你把“Newbie”中的所有字母放在set1中,把“web”放在set2中,那么你的结果就是set2。isSubsetOf(set1)。或者,检查“web”中的每个字母在“Newbie”中是否都有indexOf>-1。好的。但是如何使用indexOf()使它工作呢?看起来不错。但是如何使用indexOf()方法或test()实现同样的效果呢?我是JS新手,还不知道您在这里使用的这些方法。在
charArr.forEach
的主体中,您可以执行类似于
if(arr[0].toLowerCase().indexOf(element)=-1的操作
至于测试方法,我个人不会在这里使用它,但我相信你可以在某处找到一个例子online@icelandico
includes
只是一种很好的方法,可以使用
indexOf(…)!==-1
看起来不错。但是如何使用indexOf()方法或test()实现同样的效果呢?我是JS新手,还不知道您在这里使用的这些方法。在
charArr.forEach
的主体中,您可以执行类似于
if(arr[0].toLowerCase().indexOf(element)=-1的操作
至于测试方法,我个人不会在这里使用它,但我相信你可以在某处找到一个例子online@icelandico
includes
只是一种很好的方法,可以使用
indexOf(…)!=-1