我是JavaScript新手。我已经在其中创建了indexof函数,但未提供正确的输出: 问题是: / * 实现一个名为indexOf的函数,该函数接受两个参数:字符串和字符,并返回字符串中字符的第一个索引。 * /
这是我的代码:
function indexOf(string, character) {
let result = string;
let i = 0;
let output = 1;
while (i < result.length) {
if (result[i] === character) {
output = output + indexOf[i];
}
}
return output;
}
我想知道我在做什么错。请帮忙。
答案 0 :(得分:3)
您正在使事情变得比您需要的难。如果您要执行此操作而不调用内置的indexOf()
(我认为这是练习的重点),则只要条件匹配就只需从函数中return
。指示中说“返回第一个索引”-即循环中的i
。
如果在循环中找不到任何东西,通常会返回-1
:
function indexOf(string, character) {
let i=0;
while(i < string.length){
if(string[i] == character){ // yes? just return the index i
return i
}
i++ // no? increase i and move on to next loop iteration
}
return -1; // made it through the loop and without returning. This means no match was found.
}
console.log(indexOf("Mark Was Here", "M"))
console.log(indexOf("Mark Was Here", "W"))
console.log(indexOf("Mark Was Here", "X"))
答案 1 :(得分:0)
indexOf()是字符串的内置方法,它告诉您单词中特定字符的索引。请注意,这将始终返回FIRST匹配字符的索引。-
您可以编写如下内容:
function indexOf(string, character){
return string.indexOf(character)
}
因此,如果我要使用函数并传入两个必需的参数:
indexOf("woof", "o") //this would return 1
答案 2 :(得分:0)
假设您的问题是练习仅匹配字符的第一个匹配项,而不匹配子字符串(连续多个字符),那么最直接的方法是:
const indexOf = (word, character) => {
for (let i = 0; i < word.length; i++) {
if (word[i] === character) {
return i;
}
}
return -1;
}
如果您还需要匹配子字符串,如果您找不到答案,请在此答案上留下评论,我会帮助您。