2個連續通話R.reduce考慮這個代碼之間不復位,使用Ramda 0.21.0:累加器在R.pipe
var iteratee = (acc, [k, v]) => {
acc[k] = ++v;
return acc
}
var foo = R.pipe(
R.toPairs,
R.reduce(iteratee, {})
)
console.log(foo({ a: 1, b: 2})) // { a: 2, b: 3 }
console.log(foo({ c: 3, d: 4})) // { a: 2, b: 3, c: 4, d: 5 }
爲什麼第二次調用foo
顯示{ a: 2, b: 3, c: 4, d: 5 }
代替{ c: 4, d: 5 }
?
是否有某種類型的記憶正在進行?我希望在每次應用foo時將acc
的初始值重置爲{}
。
您可以改變初始值。 Ramda並不關心它,並且在迭代開始時不會生成克隆。 – iofjuupasli
也可以使用map函數完成示例 – iofjuupasli