JSFiddle - React, Tailwind, and code Playground

JavaScript

function partial(fn) {
 var args = [].slice.call(arguments);
 args.shift();

 return function() {
 	var newArgs = args.concat([].slice.call(arguments));
 
  return fn.apply(null, newArgs);
 }
}

function partialAny(fn) {
 var args = [].slice.call(arguments);
 args.shift();

 return function() {
  var newArgs = [].slice.call(arguments);;

  for (arg in args) {
    if(typeof(args[arg]) === 'undefined') {
     args[arg] = newArgs.shift();
    }
  }
 
  return fn.apply(null, args);
 }
}


function test(a, b, c) { return 'a=' + a + ',b=' + b + ',c=' + c; }
var test1_3 = partialAny(test, 1, undefined, 3);
console.log(test1_3(5)); // a=1,b=5,c=3