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

是否可以使用reduce而不是filter和map?[重复]

郗福
2023-03-14

我从对象和对象数组中更改了一个对象两次,这样在第一次迭代中,我过滤掉了几个对象,在第二次迭代中,我使用map更改了每个过滤后的对象。我能用减速机或更好的吗?

  const originalTree = html.parse(text);

  if (originalTree[0].type === 'text') {
    return text;
  }
  const result = originalTree
    .map((obj) => ({
      ...obj,
      children: obj.children.filter((el) => el.name !== 'style'),
    }))
    .map((obj) => ({
      ...obj,
      children: obj.children.map(function(child) {
        child.attrs = {};
        return child;
      }),
    }));

  return html.stringify(result);
}

共有1个答案

祝宏放
2023-03-14

这里有一种方法可以循环使用一个originalTree。map(),也简化了孩子的。过滤器()。映射()链到子对象。flatMap()调用:

const result = originalTree.map(
  obj => ({
    ...obj,
    children: obj.children.flatMap(
      el => el.name !== 'style'
        ? [{ ...el, attrs: {} }]
        : []
    )
  })
);

如果你想继续在obj.children上分别使用Filter()map(),我建议至少添加attrs而不是修改现有的引用:

const result = originalTree.map(
  obj => ({
    ...obj,
    children: obj.children.filter(
      el => el.name !== 'style'
    ).map(
      child => ({ ...child, attrs: {} })
    )
  })
);
 类似资料:
  • 以下是我在URL中读到的优势:有角度的承诺和可观察的 承诺: 返回单个值 未取消 包含try/catch和async/await的更多可读代码 可观测的 随时间使用多个值 可取消 支持map、filter、reduce和类似运算符 使用反应扩展(rxj) 项随时间异步到达的数组 在observable中,我看到3&4点支持操作符和RXJ。我只是有一个基本的问题,比如我不能使用RXJS和有承诺的操作

  • ,和在Python 2中完美工作。这里有一个例子: 但是在Python 3中,我收到以下输出: 如果有人能向我解释这是为什么,我将不胜感激。 为进一步清晰起见,代码截图:

  • 我有一个简单的流如下: 但Intellij建议我: “filter()”和“map()”可以互换。检查信息:报告流API调用链可以简化。它允许在遍历集合时避免创建冗余的临时对象。例如 collection.stream()→collection.for每个() collection.stream()。 Intellij给出的例子很容易理解,但我不明白为什么它建议我使用。 我查看了的来源,但没有找到

  • 我有一个包含映射属性的json字符串,如 当Jackson将其反序列化到包含an属性的类中时,它似乎执行了。而在序列化时,它将把对象序列化为相同的格式。 是否有一种方法让jackson正确反序列化到一个只有注解的映射中,或者我需要做一个自定义序列化器。 带有getter/setter的示例对象:

  • 我想把这个列表收集到两张地图中(如果可能的话,也可以在一张地图中) 一个映射应该将映射到用户玩过的游戏数量--基本上是具有状态的游戏 另一个映射应该将存储到所有游戏计数。它看起来像这样 有没有一种方法可以在块内实现,而不是使用?

  • 问题是,如果我执行上述^,以访问endpoint上的请求信息,则如果筛选器验证失败,我就不能再中止筛选器中的请求,因为我会得到以下错误: 似乎如果您在Jerseyendpoint上定义任何类型的参数,这些参数可以在ContainerRequestContext中访问,那么它将不允许您中止过滤器中的过滤器链。 一个解决方法(我还没有尝试过,但假设会成功)是这样做:如果过滤器验证失败,我可以只向请求添