如何避免字符串javascript中出现重复字符等?
我用一个有两个参数(s,r)的函数来解决这个问题;s、 是字符串和r,表示可以重复多少次的数字 示例:如果我输入(“aassaa”,1)它必须给我“asa” 但是mi代码不能与(“aadaa”,1)一起工作,因为输出的是(“ad”)而不是(“ada”) 我需要(“ada”) strong文本 我正在尝试执行的代码:如何避免字符串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
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++