Javascript 数组推送字符

Javascript 数组推送字符,javascript,arrays,Javascript,Arrays,这可能是个愚蠢的问题,但它把我弄糊涂了 var text=您好,安德烈亚斯·安德烈亚斯·科斯塔基斯先生,阿拉·克雷姆·安德烈亚斯先生,钢琴手,波托索普尼克特先生,斯卡拉维奥斯先生,安德烈亚斯先生; var myName=Andreas; var命中率=[]; 对于var i=0;i

这可能是个愚蠢的问题,但它把我弄糊涂了

var text=您好,安德烈亚斯·安德烈亚斯·科斯塔基斯先生,阿拉·克雷姆·安德烈亚斯先生,钢琴手,波托索普尼克特先生,斯卡拉维奥斯先生,安德烈亚斯先生; var myName=Andreas; var命中率=[]; 对于var i=0;i
因为数组hits[]是在循环之外初始化的。在第一个循环运行之后,数组中已经有了内容。当第二个循环运行时,它只会将更多的元素推送到它。 如果hits[]数组在循环内初始化,则内容将被覆盖

普朗克:


.push函数始终添加到目标数组的末尾。hits数组开始时为空,因此推送的第一个字符将成为第一个条目。之后,.push总是在末尾添加。不清楚!你到底在找什么。做最后一个循环k而不是i@zer00ne为什么?不是嵌套的还是我错了?这就像OP的问题一样让人困惑。
var text = "Hello Mr Andreas Andreas Kostakis o ala krem Andreas o pianistas o poutsopnikt\o skaraveos o Andreas";
var myName = "Andreas";
var hits_to_not_overwrite = [];

for ( var i = 0; i < text.length; i++){
    if ( myName[0] === text[i] ) {
        var hits_to_overwrite = [];
        for (var j = i; j <  (myName.length + i); j++){
            hits_to_not_overwrite.push(text[j]);    
            hits_to_overwrite.push(text[j]);    
         }
    }
}

document.write("<p>No overwrite:</p>");
for (var i  = 0; i < hits_to_not_overwrite.length; i++ ) {
  document.write(hits_to_not_overwrite[i]);
}

document.write("<p>Overwrite:</p>");
for (var i  = 0; i < hits_to_overwrite.length; i++ ) {
  document.write(hits_to_overwrite[i]);
}