代码之家  ›  专栏  ›  技术社区  ›  Elichy

使用添加计数过滤数组中的重复值。。。新建集合

  •  -1
  • Elichy  · 技术社区  · 1 年前

    我有一个重复值的数组,我从API获得这些值,下面的ccode获得的所有注释 数学 没有重复的笔记使用。。。new Set()方法:

    let notes = [];
    if (props.getAllNotes()) {
        const maths = props.getAllNotes().map(item => {
            return item.subjects[0].math_note
        });
        notes = [...new Set(maths)];
    }
    

    这就是我在 props.getAllNotes() :

    notes = [15,16,10,13,15,16,10,18,11,13,15,16,10,18,11];
    

    这就是我得到的:

    notes = [15,16,10,13,18,11];
    

    我想把最后数组中每个音符的计数相加 笔记 例如:

    notes = [{10: 3}, {15: 5}...]
    

    注释的方法在对象中执行,我需要对最终数组执行 笔记 其中我使用 …新集() 方法,因为我正在通过它进行映射以渲染一些数据

    const counts = stars.reduce((acc, value) => ({
        ...acc,
        [value]: (acc[value] || 0) + 1
    }), {});
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Unmitigated    1 年前

    创建包含每个数字的频率的对象后,可以 map 以创建所需的对象数组。

    let arr = [15,16,10,13,15,16,10,18,11,13,15,16,10,18,11];
    let res = Object.entries(arr.reduce((acc, n) => {
      acc[n] = (acc[n] || 0) + 1;
      return acc;
    }, {})).map(([k, v]) => ({[k]: v}));
    console.log(res);