以相等的值过滤数组

Val*_*cha 1 javascript arrays

我有一个数组:

let array = ['yay', 'yay', 'yay', 'opps', 'yay', 'yay', 'opps', 'opps', 'opps'];
Run Code Online (Sandbox Code Playgroud)

如果结果我需要它,如何过滤此数组:

let filterArray = [['yay', 3] ['opps', 1], ['yay', 2], ['opps' 3]];
Run Code Online (Sandbox Code Playgroud)

谢谢.

Anu*_*sht 5

您可以使用Array.reduce方法迭代原始数组并创建新数组.

  • 如果acc(累积数组)为空,则按下数组中的[curr, 1](当前变量和计数)
  • 如果acc(累积数组)最后推送索引包含curr变量,则更新计数
  • 如果acc(累计阵列)最后被推索引不包含curr变量,然后按[curr, 1]在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);
Run Code Online (Sandbox Code Playgroud)