Array.join()的不同结果

时间:2014-07-07 15:56:34

标签: javascript join push

请查看以下代码:

var words = [];        
var temp_words =[];
var div = document.getElementById('div');
document.onkeypress = function(evt) {
    evt  = evt.keyCode;
    var event = String.fromCharCode(evt);
    // alert(event);
    temp_words.push(event);
    var w = temp_words.join("");
    words.push(w);
}

HTML     

现在在谷歌控制台中,我看到了结果。

如果我输入textarea sanmevg saini,那么words数组将返回:

["s", "sa", "san", "sanm", "sanme", "sanmev", "sanmevg", "sanmevg ", "sanmevg s", "sanmevg sa", "sanmevg sai", "sanmevg sain", "sanmevg saini"]   

不是["sanmevg saini"]

如果我写[''a,'b','c', ' ','d' ].join(''),则返回预期结果,即 ['abc d']。那么我的代码中的问题是什么?

2 个答案:

答案 0 :(得分:1)

没有必要使用var temp_word,var字就足够了。每次按一个键时,word数组都会存储temp_word的合并值,这样你就会得到错误的值。代码应该是这样的:

<textarea id="div"></textarea>
<script>
    var words = [];        
    var temp_words =[];
    var div = document.getElementById('div');
    document.onkeypress = function(evt){
        evt  = evt.keyCode;
        var event = String.fromCharCode(evt);
        words.push(event);
        div.innerHTML = words.join("")
    }
</script>

我为你写了一个jsfiddle:http://jsfiddle.net/bS4WP/ 顺便说一下,你的代码很丑,缩进是错的,你的代码应该和你女朋友一样漂亮。

答案 1 :(得分:0)

每按一次键,另一个单词就会添加到words数组中。只需使用words = temp_words.join("");