我不知道如何表达这个问题.如果你能用一种更好的方式在你的回答中表达这一点,我将不胜感激.我的问题是,有没有办法在一条语句中编写以下代码?唯一真正的区别是,如果e.featured是假的,那么就会增加一个特色项目.如果为真,则将另一个添加到OpenSourceProjects.我觉得我好像错过了一些明显的东西.

  const featuredProjects = allProjects.map((e) => {
    if (e.featured == true) {
      return (
        buildCard(e)
      );
    }
  });

  const openSourceProjects = allProjects.map((e) => {
    if (e.featured == false) {
      return (
        buildCard(e)
      );
    }
  });

这看起来很脏,并且接近代码重复,这是我想要避免的.

推荐答案

您可以在一次REDUTE呼叫中过滤出单独的.下面是一个例子.你可以推buildCard(curr)

const allProjects = [
  { title: "Project 1", featured: true },
  { title: "Project 2", featured: false },
  { title: "Project 3", featured: true },
  { title: "Project 4", featured: false },
  { title: "Project 5", featured: true },
  { title: "Project 6", featured: false },
];

const {featuredProjects, openSourceProjects} =  allProjects.reduce((acc,curr) => {
  acc[curr.featured ? 'featuredProjects': 'openSourceProjects'].push(curr)
  return acc
},{featuredProjects:[],openSourceProjects:[]})

console.log(featuredProjects)
console.log(openSourceProjects)

甚至可以将数组用作累加器.作为Deceze,可读性更强 ♦提到过

const allProjects = [
  { title: "Project 1", featured: true },
  { title: "Project 2", featured: false },
  { title: "Project 3", featured: true },
  { title: "Project 4", featured: false },
  { title: "Project 5", featured: true },
  { title: "Project 6", featured: false },
];

const [featuredProjects, openSourceProjects] =  allProjects.reduce((acc,curr) => {
  acc[curr.featured ? 0 : 1].push(curr)
  return acc
},[[],[]])

console.log(featuredProjects)
console.log(openSourceProjects)

Javascript相关问答推荐

如何通过在提交时工作的函数显示dom元素?

对象和数字减法会抵消浏览器js中的数字

我在这个黑暗模式按钮上做错了什么?

从PWA中的内部存储读取文件

Redux查询多个数据库Api reducerPath&

如何在Javascript中的控制台上以一行形式打印循环的结果

Exceljs:我们在file.xlsx(...)&#中发现了一个问题'"" 39人;

Msgraph用户邀请自定义邮箱模板

如何在mongoose中链接两个模型?

Promise Chain中的第二个useState不更新

如何通过使用vanilla JS限制字体大小增加或减少两次来改变字体大小

Prisma具有至少一个值的多对多关系

如何在Angular17 APP中全局设置AXIOS

当id匹配时对属性值求和并使用JavaScript返回结果

当用户点击保存按钮时,如何实现任务的更改?

将异步回调转换为异步生成器模式

如何在我的Next.js项目中.blob()我的图像文件?

AddEventListner,按键事件不工作

JavaScript -复制到剪贴板在Windows计算机上无效

无法使用Redux异步函数读取未定义的useEffect钩子的属性';map';