Looking at your code its very unlikely that the keyword this actually refers to the array. Near impossible I would say. You could maybe write a whole book on how the this keyword behaves in Javascript. The _this value is a how babel handles the different behaviors of this.
Consider this example:
console.log(this)
function someFunction(){
  console.log(this);
  const someSubFunction =  function() {
    console.log(this)
  }
  someSubFunction();
  const someOtherFunction =  () => {
    console.log(this)
  }
  someOtherFunction();
}
someFunction();
This code is transpiled by babel to:
"use strict";
console.log(undefined);
function someFunction() {
  var _this = this;
  console.log(this);
  var someSubFunction = function someSubFunction() {
    console.log(this);
  };
  someSubFunction();
  var someOtherFunction = function someOtherFunction() {
    console.log(_this);
  };
  someOtherFunction();
}
someFunction();
Notice how the this value is reassigned to a variable called _this.
In this example, all of the log statements print out undefined. If you use the keyword this at the root scope then it will (almost) certainly be undefined. In fact if you look at line 3 of the transpiled example, babel literally just replaces this with undefined. Inside a function on the global scope, this is also undefined.
Inside a class this refers to the instance of the class if you are directly inside a method defined by the class, or in the constructor.
Anyway long story short, you need figure out what this is actually referring to. Most likely you just need to assign your array to a variable and do:
var books = _.shuffle(data.reduce((p, c, i) => {
  return p.concat(c.books);
}, [])).slice(0, 4);
If you are going to do lodash though, you could also be consistent and just use lodash like this:
var books = _.chain(data)
   .reduce((p,c,i) => _.concat(c.books), [])
   .shuffle()
   .slice(0,4)
   .value();
Slightly easier to read in my experience.
     
    
thisinstead of just using the object pointerdata?const self = this;then useselfinside of_.shuffleinstead ofthis. like:self.reduce.data.selectGame = () => {....}. Sothisshould refer todata, right?() =>gives you thethisof its definition.thistodataand it works now. @Pytth or @SLaks, you should create an answer for this and I'll accept it. Thanks for your help!