0

我正在创建一个简单的搜索程序来搜索我的姓名文本块。最后我遇到的问题是,当我将字母放在数组中时,它们似乎在每一行出现一个字符,而不是在一个文本块中统一出现。任何人都可以指出差异吗?

var text = "hah hah Aaron hah hah Aaron\
hah hah hah hah hoh Aaron hah hah hah hah\
Aaron Aaron Aaron hah";
var myName = "Aaron";
var hits = [];

for (var i =0; i< text.length; i++) {
    if (text[i] === "A") {
       for (var j = i; j <(myName.length + i); j++){
        hits.push(text[j]);
       } 
    }
}
if (hits === 0) {
    console.log ("Your name wasn't found!");
}
else {
    console.log(hits);
}
4

2 回答 2

0

“逐字母”行为的原因是变量hits包含来自所有匹配项的单个字母数组。

您要么需要使用从一个名称中找到的字母在数组上调用join方法,要么使用更高级的东西而不是循环。例如,text.match(/Aaron/g)将返回一个包含所有匹配名称的数组。

于 2013-04-14T07:49:04.023 回答
-2

我认为这个搜索程序更有效:

var text = "Blah blah blah blah blah blah Eric \
blah blah blah Eric blah blah Eric blah blah \
blah blah blah blah blah Eri Epic Erics☺n"
var name = "Eric"
var x=0;
var y=0

for (var i = 0; i < text.length; i++) {
  x=0;
  for (var j = i; j < name.length + i; j++) {
    if (text[j] === name[j-i]) {
      x++;
      if(x === name.length) {
        y++
      }
    }
  }
}
console.log("Found "+y+" times")
于 2016-03-12T11:57:24.607 回答