按相等值过滤数组

瓦莱拉·切查(Valera Checha)

我有一个数组:

let array = ['yay', 'yay', 'yay', 'opps', 'yay', 'yay', 'opps', 'opps', 'opps'];

如果结果需要,该如何过滤该数组:

let filterArray = [['yay', 3] ['opps', 1], ['yay', 2], ['opps' 3]];

谢谢。

阿努拉格·辛格·比什特

您可以使用Array.reduce方法遍历原始数组并创建新数组。

  • 如果acc(累积数组)为空,则将[curr, 1](当前变量和计数)推入数组
  • 如果acc(累积数组)最后推送的索引包含curr变量,则更新计数
  • 如果acc(累积数组)最后推送的索引不包含curr变量,则推送[curr, 1]in acc

let array = ['yay', 'yay', 'yay', 'opps', 'yay', 'yay', 'opps', 'opps', 'opps'];

let modifiedArray = array.reduce((acc, curr) => {
  if (!acc.length) {
    acc.push([curr, 1]);
  } else {
    let lastPushedArray = acc[acc.length-1];
    if (lastPushedArray[0] === curr) {
      acc[acc.length-1][1]++;
    } else {
      acc.push([curr, 1]);
    }
  }
  return acc;
}, []);

console.log(modifiedArray);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章