Я столкнулся с этим при обновлении манипуляций с цепочкой lodash и не понимаю, почему это будет работать по-другому.
Я сузил его до цепочки forEach на обертке lodash.
let tab = [{a:1, b:1}, {a:1, b:2}, {a:2, b:1},{a:2, b:2}]
let res = _(tab).forEach(el => {el.c = 3; return el;}).groupBy('a')
console.log(res)
https://jsbin.com/wahokezeja/edit?js,console
Это вызовет ошибку:
"TypeError: _(...).forEach(...).groupBy не является функцией
Однако при подключении к карте все работает нормально
let tab = [{a:1, b:1}, {a:1, b:2}, {a:2, b:1},{a:2, b:2}]
let res = _(tab).map(el => {el.c = 3; return el;}).groupBy('a').value()
console.log(res)
https://jsbin.com/mofusel/1/edit?js,console
Это как-то связано с тем, что _(tab).forEach возвращает массив, а не оболочку lodash, но не понимаю, почему это происходит.