2013-04-13 98 views
0

我試圖生成3個隨機字符的10個項目數組。我如何在這個數組中獲得額外的填充? ([ 「undefineddhe」, 「undefinedjih」, 「undefinedeih」, 「undefinedfjj」, 「undefinedhdb」, 「undefinedidc」, 「undefinedhbk」, 「undefinedggd」, 「undefinedfeg」, 「undefinedcgk」])陣列中的填充

var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; 
(function rand(alpha){ 
    var sequence = []; 
    for(var i = 0; i < 10; i++){(function(i){ 
     for(var j = 0; j < 3; j++){(function(j){ 
     sequence[i] += alpha[Math.floor(Math.random()*10)+1]; 
     })(j)} 
    })(i)} 
return sequence; 
})(arr); 
+1

http://jsfiddle.net/ZAkVw因爲你的腳本運行同步,你並不需要所有的封鎖/ – Hackerman

回答

1

由於sequence[i]不存在,所以JS沒有得到「額外填充」,JS將undefined轉換爲字符串。所以你要給'undefined'字符串附加一個隨機的3個字母的單詞。

就在第一循環中添加sequence[i] = '';,像這樣:

var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; 
(function rand(alpha){ 
    var sequence = []; 
    for(var i = 0; i < 10; i++){(function(i){ 
     sequence[i] = ''; 
     for(var j = 0; j < 3; j++){(function(j){ 
     sequence[i] += alpha[Math.floor(Math.random()*10)+1]; 
     })(j)} 
    })(i)} 
return sequence; 
})(arr); 
3

因爲你說sequence[i] += ...

默認sequence[i]undefined。順便說一句

var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; 
(function rand(alpha){ 
    var sequence = []; 
    for(var i = 0; i < 10; i++){(function(i){ 
     sequence[i] = ""; 
     for(var j = 0; j < 3; j++){(function(j){ 
     sequence[i] += alpha[Math.floor(Math.random()*10)+1]; 
     })(j)} 
    })(i)} 
return sequence; 
})(arr); 

var a; 
a += "hello"; 
console.log(a); // "undefinedhello" 

var b = ""; 
b += "hello"; 
console.log(b); // "hello" 

可以解決這個問題。

var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; 
(function rand(alpha) { 
    var sequence = []; 
    for(var i = 0; i < 10; i++){ 
     sequence[i] = ""; 
     for(var j = 0; j < 3; j++){ 
     sequence[i] += alpha[Math.floor(Math.random()*10)+1]; 
     } 
    } 
    return sequence; 
})(arr); 

或我想我會prefere做一個命名函數:

var arr = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; 

var a = sequence(arr); 

function sequence(alpha) { 
    var sequence = []; 
    for(var i = 0; i < 10; i++){ 
     sequence[i] = ""; 
     for(var j = 0; j < 3; j++){ 
     sequence[i] += alpha[Math.floor(Math.random()*10)+1]; 
     } 
    } 
    return sequence; 
}; 
+0

謝謝你的作品。 – SLB

+0

@SLB如果您發現答案的答案應通過按下旁邊的勾號將答案標記爲正確答案。 – andlrc