Home > database >  How can i solve this exercixe with String.prototype?
How can i solve this exercixe with String.prototype?

Time:07-12

enter image description here

How can i create this to console log like this?

String.prototype.sheldonize = function () {
  return `knock ${this}`
}

'Penny'.sheldonize(3)

I have this code at the moment, but I dont know how to repeat knock more times

CodePudding user response:

Use the repeat method to establish a number of 'knocks' in the line and to establish how many times the line should repeat

String.prototype.sheldonize = function (repeats) {
  const line = `${'knock '.repeat(repeats)}${this}, `.repeat(repeats)
  return `${line.substring(0,line.length-2)}.`;
}

console.log('Penny'.sheldonize(3));

CodePudding user response:

Using For Loop and repeat method

String.prototype.sheldonize = function(count) {
  let ans = "";
  for (let i = 0; i < count; i  ) {
    ans  = "knock ";
  }
  ans = `${ans}${this}, `.repeat(count)
  ans = ans.substring(0, ans.length - 2)   "."
  return ans;
}

console.log('Penny'.sheldonize(3))
console.log('Penny'.sheldonize(2))

CodePudding user response:

Create an array and on each iteration up to n - 1 add the string to it, finally joining it up and returning the string from the function.

// If you're adding to a prototype it's always best
// to double check to see if the method already exists
// no matter (in this case) how unlikely
if (!('sheldonize' in String.prototype)) {
  String.prototype.sheldonize = function (n) {
 
    // Create the array
    const out = [];

    // Create the string
    const knock = 'knock '.repeat(n);
    
    // Loop until `n - 1` has been reached
    // pushing the string into the array
    // on each iteration
    for (let i = 0; i < n; i  ) {
      out.push(`${knock}${this}`);
    }

    // Finally return the joined array
    return out.join(', ');
  }
}

console.log('Penny'.sheldonize(3));
console.log('Penny'.sheldonize(2));
console.log('John'.sheldonize(4));

Additional documentation

  • Related