想要获取数组上重复值的计数

我是 javascript 的初学者,我想获取数组中重复值的计数

我有一个字符串“aaaaaabbbbbbbbcccccccaa”,我希望输出数组像 ["a6", "b7", "c7", "a2"];

我绑但失败了。请帮帮我

提前致谢 :)

var a = "aaaaaabbbbbbbcccccccaa";

function aa(data){
  var a = [];
  var x = [];
  //var b = data.split("")
//   var b = data.split("").filter((val,key, arr)=>{
//       //console.log(arr.indexOf(val) +" "+ key )
//       return arr.indexOf(val) === key
//   })
  //console.log(b);
  
  for(let i = 0; i<= data.length-1; i++){
    for(let j = 0; j<= data.length-1; j++){
     if(data[i] !== data[j] && x.indexOf(data[i]+""+j) <0){
       x.push(data[i]+""+j);
       a.push(data[i] +""+ j);
       break;
     }
    }
  }
  console.log(x);
  return a;
}

console.log(aa(a));

回答

我会使用正则表达式来匹配字符串中的重复字符,然后将它们映射到match[0] + match.length该部分的连接子字符串:

const aa = data => data
  .match(/(.)1*/g)
  .map(match => match[0] + match.length);
console.log(aa('aaaaaabbbbbbbcccccccaa'));

如果您不想使用正则表达式,请不要使用像从 0 到字符串长度这样的嵌套循环 - 相反,从第一个循环内部计算重复字符,从当前i索引开始并递增它:

function aa(data) {
  const result = [];
  for (let i = 0; i < data.length; i++) {
    const char = data[i];
    let matches = 1;
    while (data[i + 1] === char) {
      i++;
      matches++;
    }
    result.push(char + matches);
  }
  return result;
}

console.log(aa('aaaaaabbbbbbbcccccccaa'));


以上是想要获取数组上重复值的计数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>