1

I was solving this with a function that has 2 parameters (s, r); s, is the string and r, the number that indicates how many times it can be repeated

Example: if I enter ("aassaa", 1) it has to give me as "asa"

but mi code not work with ("aadaa",1) because what comes out is ("ad") and not ("ada") i need ("ada") strong text The code I am trying to do:

function unique(s,r) {
  if (Array.isArray(s)) s = s.join(""); // Comprobar si es array y unirlo
  if ((typeof s === "string") === false) return; // Si el elemento no es un string, detener la ejecución de la función
  let repeated = []; // Definir elementos repetidos
  const split = s.split(""); // Dividir el string
  split.forEach(el => { // Recorrer cada letra
    if (split.filter(w => w === el).length > 1) { // Comprobar si hay más de un elemento en el array devuelto por filter
      repeated.push(split.filter(w => w === el)); // Añadir un nuevo elemento a repeated
    }
  });
  repeated = Array.from(new Set(repeated.map(JSON.stringify))).map(JSON.parse); // Obtener los arrays únicos
  // console.log(repeated);
  s = [...new Set(s.split(""))].join(""); // Obtener un string con solo letras únicas
  repeated.forEach(el => { // Recorrer repeated
    s = s.replace(el[0], ""); // Reemplazar el elemento actual para no tener letras de el array repetido
    while(el.length > r) {
      el.splice(0, true); // Eliminar el primer elemento
    }
  });
  s += repeated.flat().join("");
  return s;
}

console.log(unique("aaa", 1)); // a
console.log(unique("aaa", 2)); // aa
console.log(unique(["a","a","b","a","a","a"], 2)); // baa
console.log(unique(["a","a","b","a","a","a"], 1)); // ba

1 Answer 1

1

You could filter an array of characters by using a count variable.

function unique(s, r) {
    if (Array.isArray(s)) s = s.join("");
    if (typeof s !== "string") return;
    let count = 0;

    return [...s]
        .filter((c, i) => {
            if (s[i - 1] === c) return count++ < r;
            count = 1;
            return true;
        })
        .join('');
}

console.log(unique("aaa", 1)); // a
console.log(unique("aaa", 2)); // aa
console.log(unique(["a", "a", "b", "a", "a", "a"], 2)); // aabaa
console.log(unique(["a", "a", "b", "a", "a", "a"], 1)); // aba

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.