2016-08-07 5 views
0

Я следующий код, который уменьшает массив чисел без буквы «е»array.prototype.reduce: Нажимать значение строки пустой массив в функции стрелка

var numbers = ["one", "two", "three", "four", "five", "six", 
       "seven", "eight", "nine", "ten", "eleven"]; 
var reduced = numbers.reduce(function(reducedArray, number) { 
    if (number.toString().indexOf("e") === -1) { 
    reducedArray.push(number); 
    } 
    return reducedArray; 
}, []); 

Все работает отлично. Но теперь я хочу тот же код в виде стрелки-функции

var reduced = numbers.reduce((reducedArray, number) => { 
    if (number.indexOf('e') === -1) { 
    reducedArray.push(number); 
    } 
}, []); 

Но это не работает, потому что reducedArray не определен, и я не мог найти решение этой проблемы.

+0

вам нужно возвратить его –

+1

'вар уменьшенный = numbers.reduce (((reducedArray, число) => (number.indexOf ('е') === -1 && reducedArray.push (number), reducedArray)), []); ' –

+0

Почему вы хотите, чтобы это была функция стрелки, когда ее читать гораздо труднее? –

ответ

3

Ваш код не работает, потому что вы не возвращаете массив. Но вы должны использовать вместо filter:

var numbers = ["one", "two", "three", "four", "five", "six", 
 
       "seven", "eight", "nine", "ten", "eleven"]; 
 
var reduced = numbers.filter(number => !number.includes("e")); 
 
console.log(reduced);