为什么这个.push不起作用? (JavaScript的)

时间:2015-03-20 09:39:24

标签: javascript

var text = "some text jjke kjerk jker helmi kjekjr helmi ekjrkje helmi";
var myName = "helmi";
var hits = [];

for (var i = 0; i < text.length; i++) {
    if (text[i] === 'h') {
    for (var j = i; j < text[i] + myName.length; j+=1) {
        }
    hits.push('text[j]');
        }
    };

if (hits.length === 0) {
    console.log("Your name wasn't found!");
}
else {
    console.log(hits);
}

我希望它在“文本”中找到“myName”,然后推送它。但它只会在hits.push之后推送我在括号中放入的任何内容。这段代码有什么问题?

4 个答案:

答案 0 :(得分:1)

  

但它只会推动我在hits.push

之后放在括号中的任何内容

确切地说,这就是为什么你不想在那里放一个字符串:

hits.push('text[j]');

但是变量值:

hits.push(text[j]);

答案 1 :(得分:1)

    for (var i = 0; i < text.length; i++) {
    if (text[i] === 'h') {

       for (var j = i; j < text[i] + myName.length; j+=1) {        
       hits.push(text[j]);
       }      
   }

您的代码存在括号问题,在某些情况下您的错误。

答案 2 :(得分:1)

您可以使用分割功能。它使您有机会逐字检查您的姓名,而不是逐字符检查您的姓名。

var text = "some text jjke kjerk jker helmi kjekjr helmi ekjrkje helmi";
var myName = "helmi";
var hits = [];

var texts = text.split(" ");

for (var i = 0; i < texts.length; i++) {
    if (texts[i] === myName) {
        hits.push(texts[i]);
    }
}

if (hits.length === 0) {
    console.log("Your name wasn't found!");
}
else {
    console.log(hits);
}

答案 3 :(得分:0)

您尝试做的简单示例是

if(text.indexOf(myName)!=-1)
   console.log(myName);
else
   console.log("Your name wasn't found");