Quiero escribir una función que inserte el símbolo de la tubería en el medio de la cadena si la longitud de la cadena es par; de lo contrario, elimine el carácter del medio e inserte el símbolo de la tubería. Por ejemplo:

isolateIt('abcd', 'efgh') returns ('ab|cd', 'ef|gh')
isolateIt('abcd','abcde', 'efghe') returns ('ab|cd','ab|de', 'ef|he')

Mi intento:

function isolateIt (array) {
let newarray = [];

for (let i = 0; i<array.length; i++) {

if (array[i].length%2 !==0){

newarray.push(array.splice(array[i].length%2+1,1,'|'))
}
else {
newarray.push(array.splice(array[i].length,'|'))
}


}
return newarray
}

Cuando se invoca la función

isolateIt(["1234", '12345', '1234', '123456'])

 returns [ [], [ '1234' ], [ '|' ], [] ]

Sería interesante en el enfoque correcto, pero aún más en lo que hace mi función, ya que realmente no veo un patrón al mirar la salida. ¡Gracias por leer!

0
Jenny 23 jun. 2020 a las 18:01

2 respuestas

Aquí hay un ejemplo de trabajo completo:

function spliceString(str, index, count, add) {
  if (index < 0) {
    index = str.length + index;
    if (index < 0) {
      index = 0;
    }
  }

  return str.slice(0, index) + (add || "") + str.slice(index + count);
}

function isolate(string) {
  let midpoint = string.length / 2;
  if (string.length % 2 == 0) {
    string = spliceString(string, midpoint, 0, "|");
  } else {
    string = spliceString(string, midpoint, 1, "|");
  }
  return string;
}

function isolateIt(...args) {
  return args.map(isolate);
}

console.log(isolateIt('abcd', 'efgh', 'abcde', 'efghe'));
// logs ["ab|cd", "ef|gh", "ab|de", "ef|he"]
0
pretzelhammer 23 jun. 2020 a las 15:14

Lo que debe hacer es modificar la cadena en lugar de empalmar toda la matriz

function isolateIt(array) {
  let newarray = []; 

  for (let i = 0; i < array.length; i++) {
    const mid = Math.floor(array[i].length / 2)
    if (array[i].length % 2 !== 0) {
      newarray.push(array[i].replace(array[i][mid], "|"));
    } else {
      const newStr = array[i].slice(0, mid) + '|' + array[i].slice(mid)
      newarray.push(newStr);
    }
  }
  return newarray;
}

const newArray = isolateIt(["1234", "12345", "1234", "123456"]);
console.log(newArray)
0
Toxnyc 23 jun. 2020 a las 15:32