【发布时间】:2021-07-14 14:34:41
【问题描述】:
我还在学习 js,但我在理解这个练习中犯了什么错误时遇到了一些困难。该练习来自 FCC:如果数组第一个元素中的字符串包含数组第二个元素中字符串的所有字母,它会要求返回 true。
到目前为止,我已经尝试了几种方法,但我觉得最后一种方法是我能得到的最接近的方法。到目前为止,我已经想出了这个(请注意,在将代码插入 FCC 的功能之前我正在尝试代码):
let array = ["floor", "for"];
let lowercase = array.map(name => name.toLowerCase());
let string1 = lowercase.slice(0, 1).toString();
let string2 = lowercase.slice(1).toString();
let arraysplit1 = string1.split("").sort();
let arraysplit2 = string2.split("").sort();
for (let i = 0; i < arraysplit2.length; i ++) {
for (let j = 0; j < arraysplit1.length; j ++){
if (arraysplit1.indexOf(arraysplit2[i]) != -1){
console.log("ok");
}
else {
console.log("not ok");
}
}
}
如您所见,首先我将所有内容都转换为小写(以防两个值中的一个为大写)。然后切片并串成 2 个不同的数组(很可能有一种方法可以在不创建 2 个不同数组的情况下解决这个问题,但我觉得划分 2 个单词更舒服)。对各种字母进行拆分和排序(排序实际上没用,因为无论如何我都想检查每个人)。 现在真正的问题在于 2 个 for 循环和以下 if 语句:似乎我无法正确理解这些逻辑,因为它不起作用。
如果我做错了什么,我将不胜感激。非常感谢!
【问题讨论】:
-
你可以使用Array.every和Array.includes吗?
标签: javascript arrays string indexof