如何通过函数链接在 Javascript 中简化此代码?

How to simplify this code in Javascript via function chaining?

提问人:Dotista 提问时间:7/18/2023 最后编辑:Dotista 更新时间:8/1/2023 访问量:54

问:

我想知道如何通过链接它们来简化这些函数调用。有没有办法链接 forEach、push、解构数组和映射。

 let selectorsForLoader = ['a', 'b'];
 let loadingElements = [];
    selectorsForLoader.forEach(selector => {
      loadingElements.push(...Array.from(document.querySelectorAll(selector)));
    });
    let loaders = loadingElements.map(loadingElement => {
      loadingElement.doSomething();
    });

下面是我所说的函数链接的示例:

   food.map(item => item.type)
  .reduce((result, fruit) => {
    result.push(fruit);
    return [...new Set(result)];
  }, []);
JavaScript 数组 了方法链的 简化

评论

0赞 Mark Hanna 7/18/2023
目前尚不清楚您到底要实现什么。你有没有得到过你不明白如何实施的建议或其他什么?
0赞 Dotista 7/18/2023
我澄清了这个问题。
0赞 Bergi 7/18/2023
你问的是这两个片段中的哪一个?我看不出它们有什么关系。
2赞 Bergi 7/18/2023
您正在寻找flatMap

答:

-1赞 David 7/18/2023 #1

给你:

['a', 'b'].flatMap(selector => {
    return Array.from(document.querySelectorAll(selector)));
  }).forEach(loadingElement => {
    loadingElement.doSomething();
  });

顺便说一句,你给出的那个“例子”应该这样写

new Set(food.map(item => item.type));