Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

211
Visualizações
PhoneNumber Formatter using Constructor functions JavaScript

I'm learning JavaScript, and I have this problem where I have to convert an array of numbers [6, 5, 0, 8, 3, 5, 9, 1, 7, 2] and

return as a string in this format: (650) 835-9172. using all the functions in this structure

function PhoneNumberFormatter(numbers) {
  this.numbers = numbers;
}

PhoneNumberFormatter.prototype.render = function() {
  var string = '';
  string = getAreaCode()+getExchangeCode()+"-"+getLineNumber()    //I did this
 
  return string;
};

PhoneNumberFormatter.prototype.getAreaCode = function() {
 let areaCode = this.numbers.slice(0,3);            //I did this
 return parenthesize(areaCode)                      //I did this

};

PhoneNumberFormatter.prototype.getExchangeCode = function() {
  return this.numbers.slice(3,6);     //I did this
 
};

PhoneNumberFormatter.prototype.getLineNumber = function() {
  return this.numbers.slice(6,10);     //I did this
};

PhoneNumberFormatter.prototype.parenthesize = function(string) {
  return '(' + string + ')';
};

PhoneNumberFormatter.prototype.slice = function(start, end) {
  return this.numbers.slice(start, end).join('');
};

Some help please?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Here is an alternate way using the Javascript Template Literals

Also some of your method calls were missing the this keyword, but others have already pointed that out.

function PhoneNumberFormatter(numbers) {
  this.numbers = numbers;
}

PhoneNumberFormatter.prototype.render = function() {
  return `${this.getAreaCode()} ${this.getExchangeCode()}-${this.getLineNumber()}`;
};

PhoneNumberFormatter.prototype.getAreaCode = function() {
 return `(${this.numbers[0]}${this.numbers[1]}${this.numbers[2]})`;
};

PhoneNumberFormatter.prototype.getExchangeCode = function() {
  return `${this.numbers[3]}${this.numbers[4]}${this.numbers[5]}`;
};

PhoneNumberFormatter.prototype.getLineNumber = function() {
  return `${this.numbers[6]}${this.numbers[7]}${this.numbers[8]}${this.numbers[9]}`;    
};
var pnf = new PhoneNumberFormatter([6, 5, 0, 8, 3, 5, 9, 1, 7, 2]);
console.log(pnf.render());

about 4 years ago · Juan Pablo Isaza Relatório

0

Okay I have edited your snippet here. I am leaving it to you to figure out how to use join correctly for your formatting requirements, plus how to add the space after the area code.

function PhoneNumberFormatter(numbers) {
  this.numbers = numbers;
}

PhoneNumberFormatter.prototype.render = function() {
  var string = '';
  string = this.getAreaCode()+this.getExchangeCode()+"-"+this.getLineNumber()    //I did this
 
  return string;
};

PhoneNumberFormatter.prototype.getAreaCode = function() {
 let areaCode = this.numbers.slice(0,3);            //I did this
 return this.parenthesize(areaCode)                      //I did this

};

PhoneNumberFormatter.prototype.getExchangeCode = function() {
  return this.numbers.slice(3,6);     //I did this
 
};

PhoneNumberFormatter.prototype.getLineNumber = function() {
  return this.numbers.slice(6,10);     //I did this
};

PhoneNumberFormatter.prototype.parenthesize = function(string) {
  return '(' + string + ')';
};

PhoneNumberFormatter.prototype.slice = function(start, end) {
  return this.numbers.slice(start, end).join('');
};

var pnf = new PhoneNumberFormatter([6, 5, 0, 8, 3, 5, 9, 1, 7, 2]);
console.log(pnf.render());

about 4 years ago · Juan Pablo Isaza Relatório

0

you have forgot to use this keyword for the functions prototype methods. In each prototype method you have taken the sliced elements as strings without joining the elements.

Here is your code:-

function PhoneNumberFormatter(numbers) {
  this.numbers = numbers;
}

PhoneNumberFormatter.prototype.render = function() {
  var string = '';
  string = this.getAreaCode()+this.getExchangeCode()+"-"+this.getLineNumber()    //I did this
 
  return string;
};

PhoneNumberFormatter.prototype.getAreaCode = function() {
 let areaCode = this.slice(0,3);//I did this
 return this.parenthesize(areaCode)                      //I did this

};

PhoneNumberFormatter.prototype.getExchangeCode = function() {
  return this.slice(3,6);     //I did this
 
};

PhoneNumberFormatter.prototype.getLineNumber = function() {
  return this.slice(6,10);     //I did this
};

PhoneNumberFormatter.prototype.parenthesize = function(string) {
  return '(' + string + ')';
};

PhoneNumberFormatter.prototype.slice = function(start, end) {
  return this.numbers.slice(start, end).join('');
};

console.log(new PhoneNumberFormatter([6, 5, 0, 8, 3, 5, 9, 1, 7, 2]).render())
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda