Quiero llenar el '_' con una matriz de referencia:
const reference = ['this is', 'a beautiful', 'car']; const blank = ['I know', '_']; console.log(fillBlank(reference)) function fillBlank(reference) { const ref = reference.join(' '); if(blank.length) { return // I know this is a beautiful car } else { return ref; } }Tenga en cuenta que podemos tener espacios en blanco en diferentes lugares, pero solo tenemos uno en cada matriz en blanco:
const blank = ['I know', '_']; const blank = ['_', 'I know']; const blank = ['I know', '_', 'right?'];¿Cómo puedo hacer esto?
Puedes mapear y unirte
const reference = ['this is', 'a beautiful', 'car']; const ref = reference.join(' '); const fillBlank = (blank,ref) => blank.map(item => item === "_" ? ref : item).join(", ") console.log(fillBlank(['I know', '_'],ref)) console.log(fillBlank(['_', 'I know'],ref)) console.log(fillBlank(['I know', '_', 'right?'],ref))Podemos llevar esto un poco más allá y escribir en mayúsculas la primera letra de la referencia si es necesario.
const reference = ['this is', 'a beautiful', 'car']; const ref = reference.join(' '); const fillBlank = (blank,ref) => blank.map((item,i) => item === "_" ? i>0? ref : ref.slice(0,1).toUpperCase() + ref.slice(1) : item).join(", ") console.log(fillBlank(['I know', '_'],ref)) console.log(fillBlank(['_', 'I know'],ref)) console.log(fillBlank(['I know', '_', 'right?'],ref))Prueba esto en lugar de 'return // I know this is a beautiful car':
return blank.map(item => item === '_' ? ref : item).join(' ')function fillBlank(arrToReplace, reference) { const concatedRef = reference.join(' '); arrToReplace.splice(arrToReplace.findIndex(el => el === '_'), 1, concatedRef); return arrToReplace.join(' '); }