2016-10-07 8 views
0

reduce()メソッドを使用して配列内の項目数を数え、その配列の長さを返す関数を作成しようとしています。関数を使用するときに未定義になる

これは私がこれまで持っているものです。

function len(items) { 
    items.reduce(function(prev, curr, index){ 
     return index+1; 
    }); 
} 

let nums = [1, 2, 3]; 

console.log(len(nums)); 

私はこのコードを実行しようとするたびに、私のブラウザのコンソールで、私は「未定義」というメッセージを取得します。私は自分の関数を適切に定義したと思うので、なぜ呼び出されず、値を出力しないのか分かりません。私が間違っていることや自分の論理が間違っていることを教えてください。

答えて

2

あなたはこれを試す

function len(items) { 
    return items.reduce(function(prev, curr, index){ 
     return index+1; 
    }); 
} 

または単に

function len(items) { 
    return items.length; 
} 
+0

私は長さを得るためにreduceを使う必要があります。 – FlameDra

+0

@flamedraあなたが私が言及した最初のオプションを選択することができます。 – gurvinder372

2

function len(items) { 
 
    return items.reduce(function(prev, curr, index){ 
 
     return index+1; 
 
    }); 
 
} 
 

 
let nums = [1, 2, 3]; 
 

 
console.log(len(nums));

+0

これは動作しています。あなたは、私も関数の中に戻っているときに両方のreduceメソッドを返す必要があるホエイについて説明してください。 – FlameDra

0

を返すのを忘れ:

function len(items) { 
    if(items){     //error handle 
    return items.length; 

    } 
     return 0; 
} 
+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 –

+0

長さを取得するには、reduceメソッドを使用する必要があります。 – FlameDra

関連する問題