-2
function format(template, ...values) {
    return template.replace(/{(\d+)}/g, (_,i) => values[i]);
}

The above solution returns a formatted string. for example format("{0}{1}{2}{1}{0}", "k", "a", "y") returns "kayak".

I know the string replace function in JS , Here I didn't get the arrow function

HoldOffHunger
  • 10,963
  • 6
  • 53
  • 100

1 Answers1

0

_ in fat arrow function is called as throwaway variable.

The underscore symbol _ is a valid identifier in JavaScript, and in your example, it is being used as a function parameter.

A single underscore is a convention used by some javascript programmers to indicate to other programmers that they should "ignore this binding/parameter". Since JavaScript doesn't do parameter-count checking the parameter could have been omitted entirely.

This symbol is often used (by convention again) in conjunction with fat-arrow functions to make them even terser and readable, like this:

const fun = _ => console.log('Hello, World!')
fun()

In this case, the function needs no params to run, so the developer has used the underscore as a convention to indicate this. The same thing could be written like this:

const fun = () => console.log('Hello, World!')
fun()

The difference is that the second version is a function with no parameters, but the first version has a parameter called _ that is ignored. These are different though and the second version is safer, if slightly more verbose (1 extra character).

Also, consider a case like

arr.forEach(function (_, i) {..})

Where _ indicates the first parameter is not to be used.

Shovon Das
  • 109
  • 11
  • i tried to remove the underscore and ran the solution i got undefined in the output,if possible please breakdown the entire solution – Bala Krishna Kesani Feb 02 '20 at 06:15
  • 1
    @BalaKrishnaKesani That is because in that case, `i` will be the substring that matches the entire regex, you should take a look at [`String.replace`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter) to see how replace with a function works. – Titus Feb 02 '20 at 06:19