Javascript (dynamic) insert into array, then shift all elements underneath +1

If you know the position you want to insert the element into:

Use the splice method. It's cheap and works exactly like you want. You can also insert multiple elements at once:

var strings = ["14S", "16S", "19S"];
strings.splice(1,0,"15S");

Result

"14S" "15S" "16S" "19S"

You should also use this solution if you don't want the array to be sorted in a specific way.

If you don't know the position you want to insert the element into:

You will have to resort to a push/sort combination, supplying your own sort algorithm (unless the standard sort is enough)

var strings = ["14S", "16S", "19S"];
strings.push("15S");
strings.sort(function(a, b){
    if (a is less than b by some ordering criterion)
        return -1;
    if (a is greater than b by the ordering criterion)
        return 1;
    // a must be equal to b
    return 0;
});

You can use Array.splice to insert a value:

var arr = ["14S","16S","19S"];
arr.splice(1,0,"15S");
//         ^position after which to insert
//            ^number of elements to delete (none here)
//              ^value to insert ("15S" here)
// => arr is now ["14S","15S","16S","19S"]

If you don't know the position, you could use Array.indexOf to determine it:

var arr = ["14S","16S","19S"];
arr.splice((arr.indexOf('14S')>-1 && arr.indexOf(after)+1 || 0),0,"15S");
//         ^use indexOf result if applicable or just insert 
//          (so, if no position, this turns into unshift ;)

You can create a method for it:

function arrayInsertAfter(array, after, value){
  after = array.indexOf(after)>-1 && array.indexOf('14S')+1 || 0;
  array.splice(after, 0, value);
  return array;
}
// usage
var arr = arrayInsertAfter(["14S","16S","19S"],"14S","15S");
// => ["14S","15S","16S","19S"]

MDN link for Array.splice