Javascript 如何显示Vuejs/JS中对象数组中的唯一项和发生次数?

Javascript 如何显示Vuejs/JS中对象数组中的唯一项和发生次数?,javascript,vue.js,filter,array.prototype.map,Javascript,Vue.js,Filter,Array.prototype.map,我正在为这个项目使用Vuejs开发一个清单应用程序,但我的问题是与JS相关的。 在我的数据中,我有一个用户数据,它是从表单中获取的记录的用户数据,然后是静态类别和位置,您可以从下面选择 我试图找出独特的类别,以及它们在新的对象数组中出现的次数,这些对象看起来像: [{title: 'Books', amount: 3 }, {title: 'Recods', amount: 1 }, ...] 我认为我所面临的是一个范围问题 资料 我试图让它像我在这里的“书”一样工作,但适用于所有类别。 这是

我正在为这个项目使用Vuejs开发一个清单应用程序,但我的问题是与JS相关的。 在我的数据中,我有一个用户数据,它是从表单中获取的记录的用户数据,然后是静态类别和位置,您可以从下面选择

我试图找出独特的类别,以及它们在新的对象数组中出现的次数,这些对象看起来像:

[{title: 'Books', amount: 3 }, {title: 'Recods', amount: 1 }, ...]
我认为我所面临的是一个范围问题

资料

我试图让它像我在这里的“书”一样工作,但适用于所有类别。 这是我用下面的代码显示的内容。它的内容是“Items:3”,因为我的userData中有3本书,但我需要它来显示每个独特类别的数量。 我不知道在下面的代码中放置什么
filteredItems=items.filter((item)=>item.category==='Books')。长度

方法/功能

   convertedCategories() {
      const items = this.userData.items
      const filteredItems = items.filter((item) => item.category === 'Books').length

      function getItemCountOfCategory(categoryName) {
        return filteredItems
      }
      function convertCategoriesIntoCards(categories) {
        return categories.map((el) => {
          return {
            title: el,
            amount: getItemCountOfCategory(el),
          }
        })
      }
      return convertCategoriesIntoCards(this.userData.categories)
    },
我道歉,如果我没有把它分解得足够清楚;对于我来说,从这么多代码中提取出一行与问题相关的代码仍然非常困难


如果有什么不清楚的地方,请告诉我

像这样的事情应该行得通

   convertedCategories() {
      const items = this.userData.items
      function getItemCountOfCategory(categoryName) {
        return items.filter((item) => item.category === categoryName).length
      }
      function convertCategoriesIntoCards(categories) {
        return categories.map((el) => {
          return {
            title: el,
            amount: getItemCountOfCategory(el),
          }
        })
      }
      return convertCategoriesIntoCards(this.userData.categories)
    },

哇!这确实有效!非常感谢。所以它只是将我制作的filteredItems变量移动到函数本身,然后用参数代替我上面写的'Books'值?我很高兴我没有完全偏离这一点,但我想知道是什么让我认为在函数之外定义变量是正确的调用。。。无论如何,感谢您快速简洁的回复!我不确定我问的问题是否恰当。
   convertedCategories() {
      const items = this.userData.items
      function getItemCountOfCategory(categoryName) {
        return items.filter((item) => item.category === categoryName).length
      }
      function convertCategoriesIntoCards(categories) {
        return categories.map((el) => {
          return {
            title: el,
            amount: getItemCountOfCategory(el),
          }
        })
      }
      return convertCategoriesIntoCards(this.userData.categories)
    },