indexOf 忽略数组中的第二个字符
indexOf ignores second character in array
刚学JS,需要写一个程序检查数组第一个元素的字符串是否包含数组第二个元素的字符串的所有字母。
我编写了这样的代码:
function mutation(arr) {mutation: {
var lowerCaseStringOne = arr[0].toLowerCase();
var lowerCaseStringTwo = arr[1].toLowerCase();
if (lowerCaseStringOne === lowerCaseStringTwo) {
console.log(true);
break mutation;
}
var newArray = [];
for (var i = 0; i < lowerCaseStringTwo.length; i++){
console.log(lowerCaseStringTwo[i]);
if (lowerCaseStringTwo.indexOf(lowerCaseStringOne[i]) > 0) {
newArray.push(lowerCaseStringTwo[i]);
console.log('---');
}
}
var result = newArray.join("");
if (result === lowerCaseStringTwo) {
console.log(true);
} else {
console.log(false);
}
}
}
mutation(["Mary", "Aarmy"]);
我认为这很复杂,但我无法解决问题 - "indexOf" 函数似乎忽略了我循环中的第二个字符 - 在控制台中记录它但不将其推入数组.我认为这可能发生,因为第一个和第二个字母相似,但事实并非如此。不管什么字母,它都直接忽略。
indexOf() 将为您示例中的字母 "a" return 0,因为第一个实例位于数组中的位置 0。
您应该使用“>= 0”
刚学JS,需要写一个程序检查数组第一个元素的字符串是否包含数组第二个元素的字符串的所有字母。
我编写了这样的代码:
function mutation(arr) {mutation: {
var lowerCaseStringOne = arr[0].toLowerCase();
var lowerCaseStringTwo = arr[1].toLowerCase();
if (lowerCaseStringOne === lowerCaseStringTwo) {
console.log(true);
break mutation;
}
var newArray = [];
for (var i = 0; i < lowerCaseStringTwo.length; i++){
console.log(lowerCaseStringTwo[i]);
if (lowerCaseStringTwo.indexOf(lowerCaseStringOne[i]) > 0) {
newArray.push(lowerCaseStringTwo[i]);
console.log('---');
}
}
var result = newArray.join("");
if (result === lowerCaseStringTwo) {
console.log(true);
} else {
console.log(false);
}
}
}
mutation(["Mary", "Aarmy"]);
我认为这很复杂,但我无法解决问题 - "indexOf" 函数似乎忽略了我循环中的第二个字符 - 在控制台中记录它但不将其推入数组.我认为这可能发生,因为第一个和第二个字母相似,但事实并非如此。不管什么字母,它都直接忽略。
indexOf() 将为您示例中的字母 "a" return 0,因为第一个实例位于数组中的位置 0。
您应该使用“>= 0”