Я знаю, что функция .reduce
в Javascript имеет понятие previous
и current
переменные «встроенный», так сказать, в его определении. Поэтому мне очень интересно, почему это не работает:Можно написать функцию bigram (или ngram), используя сокращение в Javascript?
var bigrams = [0, 1, 2, 3, 4].reduce(function(previous, current) {
return [previous, current]
});
Я не думаю, что означает, что я думаю, что это значит, потому что теперь bigrams
содержит:
[[[[0,1],2],3],4]
Когда я хотел:
[[0,1],[1,2],[2,3],[3,4]]
Я думаю, это связано с тем, что результат должен выталкиваться в accumlator (который, возможно, следует быть пустой массив, что-то вроде: arr.reduce(/*magic*/, [])
- Должен ли я использовать
.reduce
для этого? - Если да, есть ли другой «функциональный» способ сделать это?
- Как избежать этого поведения вложенности?
Это функция * reduce * (* fold *), где 'previous' является * аккумулятором * (и не должен называться' previous'), а не функцией карты, имеющей доступ к ее предыдущему элементу. – Bergi