javascript - 我可以一次性将其转换为长度吗?

标签 javascript reactjs json

这是 JSON 的一部分。还有其他数据,所选类型是书籍。因此,我想要一个示例来说明如何过滤电影并计算流派的长度。

const data = [{
      "1": { drama: { Comedy: true, Romance: true } },
      "2": {
        drama2: { Tragedy: true}
        others: "Dystopian",
      },
      id: "zaMR9TR7hNV3p3VFNumyNbXMto93",
      genre: {
        selected: "Movie",
      },
      displayName: "p1"
    }, 
     {
      "1": { drama: { Tragedy: true } },
      "2": {
        drama2: { Romance: true}
      },
      id: "zaMR9TR7hNV3p3VFNumyNbXMto93", //sample id
      genre: {
        selected: "Movie",
      },
      displayName: "p2"
    }]

 const drama = data.filter(
    (v) => v.genre?.selected == "Movie"
  )
  
  const comedy = drama.filter(
    (a) =>
    a["1"]?.drama.Comedy == true
  );

  const romance = drama.filter(
    (a) =>
    a["1"]?.drama.Romance == true
  );

   const tragedy = drama.filter(
        (a) =>
        a["1"]?.drama.Tragedy == true
      );

有没有办法可以将喜剧浪漫悲剧一次性转变成一个长度,而不是像这样?

  let n = comedy.length
  console.log(n)

最佳答案

您可以使用Array.reduce创建一个对象 counts,其中包含每种流派的计数。

const data = [{
  "1": { drama: { Comedy: true, Romance: true, BuddyComedy: false } },
  "2": {
    drama2: { Tragedy: true},
    others: "Dystopian",
  },
  id: "zaMR9TR7hNV3p3VFNumyNbXMto93",
  genre: {
    selected: "Movie",
  },
  displayName: "p1"
}, 
 {
  "1": { drama: { Tragedy: true } },
  "2": {
    drama2: { Romance: true}
  },
  id: "zaMR9TR7hNV3p3VFNumyNbXMto93", //sample id
  genre: {
    selected: "Movie",
  },
  displayName: "p2"
}]

const movies = data.filter(v => v.genre?.selected == "Movie");
const counts = movies.reduce((acc, cur) => {
    return Object.entries(cur["1"].drama).reduce((acc, [key,value]) => { 
        if (value) { 
            acc[key] = (acc[key] || 0) + 1;
        }
        return acc;
    }, acc)
}, {})

console.log('Counts:', counts)

关于javascript - 我可以一次性将其转换为长度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69204974/

相关文章:

javascript - react /归零 : Can't map over state [object Object]

javascript - react 语法错误

Javascript 表单输入从 json 动态创建,需要将对象映射到另一个对象的正确字段并保存

javascript - 是否可以使用上下文和引用全局存储 react 元素的尺寸?

jquery -\n 似乎在 IE 中不起作用

javascript - 无法对用户 API 后面的 App Engine 使用 Javascript 提取

javascript - 从另一个对象创建对象数组

更改文本阴影的 JavaScript 修复

javascript - React/redux + bootstrap,使模态显示对于组件来说是独一无二的

javascript - 转换 Unix 纪元中的 firebase 服务器时间戳