JSFiddle - React, Tailwind, and code Playground

JavaScript

function maxSubarray(A) {
    var max_ending_here, max_so_far;
    max_ending_here = max_so_far = A[0];
    var startIndex = 0, max_start_index = 0, max_end_index = 0;
    
    for(var i = 1;i<A.length;i++) {
        if(A[i] >= max_ending_here + A[i]) {
        startIndex = i;
        max_ending_here = A[i];
      }
      else {
        max_ending_here += A[i];
      }

      if(max_ending_here > max_so_far) {
        max_so_far = max_ending_here;
        max_start_index = startIndex;
        max_end_index = i;
      }
    };
    
    alert('max starts at ' + max_start_index + ' max ends at ' + max_end_index);
    
    return max_so_far;
    
}


alert(maxSubarray([1,2,3,4,-9,6,7,-8,1,9])) // 60


/*
From wikipedia
def max_subarray(A):
    max_ending_here = max_so_far = 0
    for x in A:
        max_ending_here = max(0, max_ending_here + x)
        max_so_far = max(max_so_far, max_ending_here)
    return max_so_far
*/