如何避免字符串javascript中出现重复字符等?

如何避免字符串javascript中出现重复字符等?,javascript,Javascript,我用一个有两个参数(s,r)的函数来解决这个问题;s、 是字符串和r,表示可以重复多少次的数字 示例:如果我输入(“aassaa”,1)它必须给我“asa” 但是mi代码不能与(“aadaa”,1)一起工作,因为输出的是(“ad”)而不是(“ada”) 我需要(“ada”) strong文本 我正在尝试执行的代码: function unique(s,r) { if (Array.isArray(s)) s = s.join(""); // Comprobar si es

我用一个有两个参数(s,r)的函数来解决这个问题;s、 是字符串和r,表示可以重复多少次的数字

示例:如果我输入(“aassaa”,1)它必须给我“asa”

但是mi代码不能与(“aadaa”,1)一起工作,因为输出的是(“ad”)而不是(“ada”) 我需要(“ada”) strong文本 我正在尝试执行的代码:

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


可以使用count变量筛选字符数组

功能唯一(s、r){
如果(Array.isArray(s))s=s.join(“”);
if(typeof s!=“string”)返回;
让计数=0;
返回[…s]
.filter((c,i)=>{
如果(s[i-1]==c)返回count++