JavaScript:打印字符,每个字符序列不间断出现的次数

问题描述 投票:0回答:2

这不是Counting the occurrences / frequency of array elements的副本有差异。

我有一个包含字符的数组:

const data = ['a', 'a', 'b', 'x', 'x', 'x', 'a'];

我需要计算每个字符序列,并用这样的不间断出现次数打印字符(每行应在程序发现不间断出现后记录:

a: 2
b: 1
x: 3
a: 1

我以为使用了'while',但我对这种逻辑有些犹豫。

const countSeq = (arr) => {

  while (arr.length > 0) {

    // logic there

    console.log(/*char: count number*/);

    if (arr.length === 0) break;

  }

}

抱歉,我正在学习。预先感谢!

javascript arrays find-occurrences
2个回答
0
投票

const data = ['a', 'a', 'b', 'x', 'x', 'x', 'a'];

const result = data.reduce((acc, val) => {
    const prevSeq = acc[acc.length - 1];

    if (!prevSeq || prevSeq.key !== val) {
        acc.push({ key: val, count: 1 });
    } else {
        prevSeq.count++;
    }

    return acc;
}, []);

console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.