首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript对重复的数组值进行计数,直到其发生变化

Javascript对重复的数组值进行计数,直到其发生变化
EN

Stack Overflow用户
提问于 2021-06-25 10:53:33
回答 3查看 50关注 0票数 0

如果这是一个重复或愚蠢的问题,我很抱歉!

基本上,我需要获取数组中重复值的计数,直到下一个值发生更改。我不能在我的项目中使用reduce(),所以任何普通的JS都会有帮助。

设array = a,b,c,a,d,d;

结果: a:3,b:5,c:3,a:1,d:2

我将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2021-06-25 11:00:26

您可以使用regex来获得所需的结果。

代码语言:javascript
复制
/([a-z])\1*/gi

代码语言:javascript
复制
let array = ["a", "a", "a", "b", "b", "b", "b", "b", "c", "c", "c", "a", "d", "d"];
const result = array
  .join("")
  .match(/([a-z])\1*/gi)
  .map((s) => `${s[0]}${s.length}`);

console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2021-11-18 14:03:10

只需在chars上循环并检查dict中的char,然后将其递增,否则将其设置为1;

代码语言:javascript
复制
let chars =  ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'a', 'd', 'd'];
const dic={}
for(char of chars){
    if(char in dic){
        dic[char]++;
    }else{
        dic[char]=1;
    }
}
console.log(dic);//{a: 4, b: 5, c: 3, d: 2}
票数 0
EN

Stack Overflow用户

发布于 2021-06-25 11:52:29

对数组元素运行迭代。找到下一个不相等的当前角色的位置。然后将这两个索引进行比较,您将找到当前角色连续的最后一个位置。增加迭代次数,这样您就不需要担心多个计数。如果没有发现不相等的字符,那么子数组的大小就是主数组大小的其余部分。

代码语言:javascript
复制
let ara = ['a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'a', 'd', 'd'];

let index = 0;
for (var i = 0; i < ara.length; i++) {

    let char = ara[i];
    let size = 0;

    let nextIndex = ara.findIndex(
        (a, index) => a !== char && index > i);
    if (nextIndex < 0) {
        size = ara.length - i;
        i = ara.length - 1;
    } else {
        size = nextIndex - i;
        i = nextIndex - 1;
    }
    console.log(char + ' ' + size);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68124835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档