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

326
Visualizações
Clase JS. Los métodos de anidamiento funcionan, pero el encadenamiento no.

tratando de completar mi tarea: crear un generador de HTML. Funciona casi bien, pero cuando intento probar el caso de encadenamiento, arroja un error. Entiendo que necesito devolver el objeto para que el encadenamiento funcione, y podemos crear nuestro toString() personalizado. Pero en este caso no sé dónde guardar los datos de las cadenas html.

 class Templater { transform(tags) { return tags.join(""); } //function returns array where [0] = atttibutes, [1] = innerText or innerNodes attributesCheck(tags) { let attributeObject = {}; tags.forEach((item) => { if(typeof item === 'object' && item !== null && !Array.isArray(item)) { attributeObject = item; } }) const content = tags.filter(item => typeof item !== 'object') let objectArr = Object.entries(attributeObject); let classIndex; let idIndex; objectArr.forEach((item, index) => { if(item[0] === 'class') { classIndex = index; } if (item[0] === 'id') { idIndex = index; } }) const classItem = objectArr[classIndex]; const idItem = objectArr[idIndex]; objectArr = objectArr.filter(item => item[0] !== 'class' && item[0] !== 'id') if (idItem) { objectArr.unshift(idItem); } if (classItem) { objectArr.unshift(classItem); } let attrString = ''; objectArr.forEach(item => { attrString += ` ${item[0]}="${item[1]}"` }) return [attrString, content]; } div(...tags) { return `<div${this.attributesCheck(tags)[0]}>${this.transform(this.attributesCheck(tags)[1])}</div>`; } span(...tags) { return `<span${this.attributesCheck(tags)[0]}>${this.transform(this.attributesCheck(tags)[1])}</span>`; } br(argument) { if (argument) { throw new Error('Nested content is not allowed'); } else { return `<br>`; } } p(...tags) { return `<p${this.attributesCheck(tags)[0]}>${this.transform(this.attributesCheck(tags)[1])}</p>`; } } const template = new Templater(); console.log(template.div('1454', {id: 'fixing'}).toString()); console.log(template.div('World of Templates', {id: "card", class: 'first'}).toString()); //nesting works console.log(template.div( template.p('Hello', {id: 'fix', class: "first-p"}), template.p('World') ).toString()); //chaining DOESN'T template.span('Hello').span('World').toString()

about 4 years ago · Juan Pablo Isaza
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