首页 > 解决方案 > 按键计数数组对象的频率

问题描述

我有很多这样的学生:

    var school =[ 
    {
    class: "ss1",
    student: "J. Kent",
    scores: "accurate"
},
{
    class: "ss1",
    student: "P. Ben",
    scores: "accurate"
},
{
    class: "ss3",
    student: "T. Maddison",
    scores: "error"
},
{
    class: "jss1",
    student: "R Briggs",
    scores: "accurate"
},
{
    class: "ss1",
    student: "P. Roberts",
    scores: "accurate"
},
{
    class: "ss1",
    student: "A. Minder",
    scores: "error"
},
{
    class: "ss1",
    student: "C. Trust",
    scores: "accurate"
},

]

我想计算属于某人的次数class: "ss1" scores: "accurate"。我四处寻找图书馆以使这变得容易,但无法找到。欢迎任何方法或更简单的方法。

标签: javascriptarrayssortingfilter

解决方案


您可以使用array.filter()

const school = [
  {
    class: "ss1",
    student: "J. Kent",
    scores: "accurate",
  },
  {
    class: "ss1",
    student: "P. Ben",
    scores: "accurate",
  },
  {
    class: "ss3",
    student: "T. Maddison",
    scores: "error",
  },
  {
    class: "jss1",
    student: "R Briggs",
    scores: "accurate",
  },
  {
    class: "ss1",
    student: "P. Roberts",
    scores: "accurate",
  },
  {
    class: "ss1",
    student: "A. Minder",
    scores: "error",
  },
  {
    class: "ss1",
    student: "C. Trust",
    scores: "accurate",
  },
];


const getResults = (group, score) => {
  return school.filter((obj) => obj.class === group && obj.scores === score).length;
}

const result = getResults("ss1", "accurate");

console.log(result);

array.reduce()

const school = [
  {
    class: "ss1",
    student: "J. Kent",
    scores: "accurate",
  },
  {
    class: "ss1",
    student: "P. Ben",
    scores: "accurate",
  },
  {
    class: "ss3",
    student: "T. Maddison",
    scores: "error",
  },
  {
    class: "jss1",
    student: "R Briggs",
    scores: "accurate",
  },
  {
    class: "ss1",
    student: "P. Roberts",
    scores: "accurate",
  },
  {
    class: "ss1",
    student: "A. Minder",
    scores: "error",
  },
  {
    class: "ss1",
    student: "C. Trust",
    scores: "accurate",
  },
];


const getResults = (group, score) => {
  return school.reduce((count, obj) => obj.class === group && obj.scores === score ? ++count : count, 0);
}

const result = getResults("ss1", "accurate");

console.log(result);


推荐阅读