2017-12-13 15 views
1

私はこの問題を解決するのに問題があります(結果は常に未定義です)。私は何が間違っているのか分かりません。Javascript Array ES6未定義のエラー

数値をとり、0からその数値にリストを生成する関数を記述します。

それは5

から0から行くリストの値になるように第二の最後の項目である必要があり、その変数secondLastItemに値を割り当てmyNumberList変数に値を代入する関数を使用myNumberListアレイ。

function listMaker(listLength) {} 

var myNumberList = null; // replace with number list created by listmaker 

var secondLastItem = null; // replace with second last item 
+0

のですか? 4castle @ – 4castle

+0

私は同様にそれを行う場合、私は未定義得る: 関数listMaker(LISTLENGTH){ Array.apply(ヌル、{長さ:LISTLENGTH})マップ(Number.call、数) } listMaker(10) ; – user8227859

+0

あなたのコードに 'return'ステートメントがありません。それ以外の場合は、正常に見えます。 – 4castle

答えて

3

あなたはES6のスプレッド演算子(...)を使用して、以下の方法を試すことができます:ここでは

function listMaker(listLength) { 
 
    return [...Array(listLength).keys()]; 
 
} 
 
var myNumberList = listMaker(10); 
 
// If you want the specified number passed as argument to be included as the last item in the array then push it. 
 
myNumberList.push(10); 
 
console.log(myNumberList);

+0

リストをNにもリストする方法は?だから、ここでも10を挙げるだろうか? – user8227859

+0

@ user8227859、私は要件について明確ではありません。あなたは、どの出力を期待しているかのように、少し詳細を教えてください。 – Mamun

+0

@ user8227859のように、 '10'もリストに含めたいと思うかもしれません。渡す引数は、作成する配列の長さです。配列インデックスは0から始まるので、配列は最大9になります。指定された番号を配列の最後の項目として含めるには、番号+1を渡すか、return文に1を追加する必要があります。答えを確認してください。私はそれを更新しました。 – Mamun

0

はそれを書くための一つの方法である:

 function listMaker(number) { 
 
     var secondToLast; 
 
     var list = []; 
 
     
 
     for (var i = 0; i <= number; i++){ 
 
     list.push(i); 
 
     \t } 
 
     secondToLast = list[list.length - 2]; 
 
      
 
     return [list, secondToLast] 
 
     } 
 
     
 
     
 
     var list = listMaker(5)[0]; 
 
     var secondToLast = listMaker(5)[1] 
 

 
console.log(list + "\n" + secondToLast);
スニペットです

^ここ

は、どの部分をトラブルがあるjsfiddle

+0

これはrepl.itで実行されていないようですか? – user8227859

+0

私はそれを使ってjsfiddleを持っていました。うーん。今すぐ電話ですぐにそれをチェックアウトする必要があります –

+0

私はコードを読みやすくするためにスニペットに入れました。 –