javascript - 如何合并 JavaScript 数组中的某些项目?

标签 javascript arrays sorting ecmascript-6

假设您有以下数组:

const ab = ['a', 'a', 'b', 'b', 'b', 'a', 'b', 'b', 'a'];

您将如何更改此数组,以便所有“b”项目组合在一起,直到您点击另一个“a”。

所以上面数组的结果应该是这样的:

['a', 'a', 'bbb', 'a', 'bb', 'a'];

我试图通过将 span 标签包裹在与 React 应用程序中的模式匹配的单词周围来解决问题,但这本质上是我的问题。

我已经在这方面工作了很长时间,但无法得出令我满意的任何结果。

有什么想法吗?

干杯。

最佳答案

计算重复出现的次数,然后以此为基础构建结果:

 const result = [];
 let curr = array[0], count = 1;

 for(const el of array.slice(1).concat(undefined)) {
   if(el !== curr || el !== "b") {
     result.push(curr.repeat(count));
     curr = el, count = 1;
   } else count++;
 }

关于javascript - 如何合并 JavaScript 数组中的某些项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54812192/

相关文章:

php - ajax调用返回php数组,json似乎不正确

algorithm - 基于子集倒置的排序算法

javascript - 如何查看是否应用了同源策略?

javascript - asp.net mvc - 如何使用 Javascript 创建多个 DropDownList

c++ - C++ 中的数组和长度

php - 如何在 Magento 中获取属性选项的位置?

php - csv文件的多维数组排序过程

javascript - 重写 appendChild()

php - 中断 session 变量的警报消息

reactjs - 从数组中删除数据时,UseEffect 不会重新渲染,仅在添加数据时才会重新渲染