当前位置: 首页 > 知识库问答 >
问题:

在数组上循环并创建忽略值的新数组的最短方法?[重复]

穆博简
2023-03-14

在我的很多代码中,我做了如下操作:

return routes.map(route => processValue(route.someProperty));

快速返回一个新数组,其中只包含我需要的已处理数据。但是,在其当前形式中,如果不返回任何内容,新数组将有一个未定义的值,用于该map()在原始数组元素上运行函数的索引。

我想知道是否有一个类似的,快速的方法来实现与. map()过滤器()混合的东西,其中新的数组只有从回调函数返回的元素?


共有1个答案

单于善
2023-03-14

你可以使用。减少

return routes.reduce((acc, route) => {
  const value = processValue(route.someProperty);
  if (value !== undefined) acc.push(value);
  return acc;
}, []);

或者更小,只要ProcValue不返回数组

return routes.reduce((acc, route) => acc.concat(processValue(route.someProperty) || [], []);

我个人喜欢。map()。过滤尽管如此

return routes
  .map((route) => processValue(route.someProperty))
  .filter(Boolean);
 类似资料:
  • 如果我有这样的数据: 有人能告诉我javascript函数在数据上循环并使用相同的键重新创建数据结构的样子吗?但是值将是由 希望这是有意义的,寻找这样的最终输出:

  • 问题内容: 在Java中,对巨大的矩阵X使用以下函数来打印其列不相同的元素: 首先,我按列(索引j)进行迭代,并按行(索引i)进行内部迭代。 对于不同的矩阵,此函数将被调用数百万次,因此应优化代码以满足性能要求。我想知道关于values数组。使用还是代替它会更快? 问题答案: 效率更高的方法是使用Set而不是列表,例如HashSet实现。contains方法将在O(1)中运行,而不是在带有列表的O

  • 我有一个对象,如下所示: 我想过滤并创建一个满足任何条件的新数组。例如:过滤器的名称为“AD”,并创建一个新的密钥数组,如下所示: 尝试地图 尝试过了。过滤器: 提前谢谢

  • 问题内容: 我正在尝试显示10位玩家的表格。我通过ajax获取数据,并将其作为道具传递给我的孩子。 现在,我需要一个列表组件来渲染播放器: 这给了我一个。 我不确定发生了什么,我的控制台日志显示了正确的数据,但是以某种方式我无法在返回中访问它。 我想念什么? 问题答案: 在组件中,您需要更改初始状态,因为您正在尝试使用for,但是此属性是导致错误的原因。 此外,如在是你应该从它那里得到的属性

  • 我有一个现有的数组,如下所示 然后我想创建一个新的数组,如下所示 我已经通过方法尝试过了 但是它没有给出一个正确的数组,请帮助我解决这个问题

  • 我想知道是否可以编辑在循环中处理的当前对象 我正在处理一组对象,我想仔细查看并在数据库中查找与该问题对象相关联的答案。因此,对于每个问题,去获取答案对象,并更新我的循环中的当前>,以便我可以在其他地方输出/处理。