Given time intervals determine if a person could attend all meetings The task is taken from LeetCode


  Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si &lt; ei), determine if a person could
  attend all meetings.
  
  Example 1:

Input: [[0,30],[5,10],[15,20]]
Output: false

  
  Example 2:

Input: [[7,10],[2,4]]
Output: true



My imperative solution:

/**
 * @param {number[][]} intervals
 * @return {boolean}
 */
var canAttendMeetings = function(intervals) {
  intervals.sort((a,b) =&gt; a[0] - b[0]);
  for (let i = 1; i &lt; intervals.length; i++) {
    if (intervals[i][0] &lt; intervals[i - 1][1]) { return false; }
  }
  return true;
};


My functional solution:

/**
 * @param {number[][]} intervals
 * @return {boolean}
 */
var canAttendMeetings = function(intervals) {
  return intervals
    .sort((a,b) =&gt; a[0] - b[0])
    .flat()
    .every((x,i, src) =&gt; i % 2 === 0 || src[i + 1] === void 0 || src[i] &lt; src[i + 1]);
};
These two functions look quite sufficient to solve the task. I will say that the functional solution will likely be slower, not only because it is functional but also because of the call to .flat() and iterating over twice as many elements. 

Correct me if this is incorrect, but the call to .flat() could be removed if the call to .every() was changed to a condition similar to the condition in the imperative solution: 

.every((x,i, src) =&gt; i === 0 || !(src[i][0] &lt; src[i - 1][1]));