需求
给出一个包含两个字符串的数组。验证第二个字符的子字符全被第一个字符包含(忽略大小写)
是则返回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 只会为那些已经被赋值的索引调用。不会为那些被删除或从来没被赋值的索引调用。
有其他好的方法或思路的道友,不妨在沙发区神交一番。