【译】JS基础算法脚本:验证字符包含关系

需求

给出一个包含两个字符串的数组。验证第二个字符的子字符全被第一个字符包含(忽略大小写)
是则返回true;否则返回false

mutation(["hello", "Hello"]) should return true
mutation(["hello", "neo"]) should return false

思路1

1.for循环每个子字符是否在字符串1中
2.if语句检测数组的每个元素是否存在于字符串1中

function mutation(arr) {
    var newStr1 = arr[1].toLowerCase(),
        newStr0 = arr[0].toLowerCase();
    for(var i=0; i<arr[1].length; i++) {
        if(newStr0.includes(newStr1[i]) === false) {
            return false;
        }
    }
    
    return true;
} 

mutation(["Mary", "Army"]);
function mutation(arr) {
    var newStr1 = arr[1].toLowerCase(),
        newStr0 = arr[0].toLowerCase();
    for(var i=0; i<arr[1].length; i++) {
        if(newStr0.indexOf(newStr1[i]) === -1) {
            return false;
        }
    }
    
    return true;
} 

mutation(["Mary", "Army"]); 

思路2

1.arr.every()检测字符串2的每个子字符

function mutation(arr) {
    return arr[1].toLowerCase().split("")
      .every((letters) => arr[0].toLowerCase().indexOf(letters) !== -1);
}
 
mutation(["Mary", "Army"]);
function mutation(arr) {
    return arr[1].toLowerCase().split("")
      .every((letters) => arr[0].toLowerCase().includes(letters));
}
 
mutation(["Mary", "Army"]);  

相关

str.indexOf(searchValue[, fromIndex])
  • indexOf() 方法返回调用 String 对象中第一次出现的指定值的索引,开始在 fromIndex进行搜索。
    如果未找到该值,则返回-1。
str.includes(searchString[, position])
  • includes() 方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回true或false。
arr.every(callback[, thisArg])
  • every() 方法测试数组的所有元素是否都通过了指定函数的测试。
  • every 方法为数组中的每个元素执行一次 callback 函数,直到它找到一个使 callback 返回 false(表示可转换为布尔值 false 的值)的元素。如果发现了一个这样的元素,every 方法将会立即返回 false。否则,callback 为每一个元素返回 true,every 就会返回 true。callback 只会为那些已经被赋值的索引调用。不会为那些被删除或从来没被赋值的索引调用。

有其他好的方法或思路的道友,不妨在沙发区神交一番。

    原文作者:小石头
    原文地址: https://segmentfault.com/a/1190000010704308
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞