2016-04-18 4 views
2

私はランダムなテキストで単純な配列を作成しようとしています。私はいつも配列の終わりの後に未定義を参照してください。それを削除する方法はありますか?私は[i-1]を検索して試しましたが、運はありません。この配列の最後に未定義があるのはなぜですか?

function arrayMaker(integer) { 
var alphabet = "abcdefghijklmnopqrstuvwxyz"; 
var array = []; 
for (q = 0; q < integer; q++){ 
    var word = ''; 
    for (i = 0; i < Math.floor((Math.random() * 10) +1); i++){ 
     var number = Math.floor(Math.random() * 26); 
     word += alphabet.substring(number, (number+1)); 
    } 
array.push(word); 
} 
console.log(array); 
} 
var test = arrayMaker(10) 
console.log(test) 

答えて

5

あなたは何かを返さない。追加

return array; 

次に、配列を取得します。

ちょうどreturnを使用するか、または返さない場合は、undefinedが返されます。

function arrayMaker(integer) { 
 
    var alphabet = "abcdefghijklmnopqrstuvwxyz", 
 
     array = [], q, i, number, word; 
 
    for (q = 0; q < integer; q++) { 
 
     word = ''; 
 
     for (i = 0; i < Math.floor((Math.random() * 10) + 1) ; i++) { 
 
      number = Math.floor(Math.random() * 26); 
 
      word += alphabet.substring(number, (number + 1)); 
 
     } 
 
     array.push(word); 
 
    } 
 
    return array; 
 
} 
 
var test = arrayMaker(10); 
 

 
document.write('<pre>' + JSON.stringify(test, 0, 4) + '</pre>');

+0

は、より正確には:あなたは、テスト変数の値で見ること未定義。ログに表示されるものは、console.log(array)のログです。 – Walfrat

+1

ありがとう、私は今理解しています! –

0

あなたはそれが未定義を示している理由です、関数から任意の値を返すされていません。変数 "test"にはデータがありません。

これを試してみてください:

function arrayMaker(integer) { 
var alphabet = "abcdefghijklmnopqrstuvwxyz"; 
var array = []; 
for (q = 0; q < integer; q++){ 
    var word = ''; 
    for (i = 0; i < Math.floor((Math.random() * 10) +1); i++){ 
    var number = Math.floor(Math.random() * 26); 
    word += alphabet.substring(number, (number+1)); 
    } 
    array.push(word); 
} 

console.log(array); 
return array; 
} 
var test = arrayMaker(10) 
console.log(test) 
関連する問題