重构方法链 javascript

Refactor method chaining javascript

我用一堆嵌套方法调用一个函数,我正在使用名为 cheerio 的网络抓取工具,我想从中获取文本,所以我需要调用一堆函数。这是我的示例代码。

        var text = $(el)
          .children()
          .first()
          .children()
          .first()
          .children()
          .first()
          .text()
          .replace(/\s\s+/g, " ");

我的问题是,如何简化我的函数以便在不链接我的函数的情况下获得相同的结果?

使用循环

let child = $(el).children().first()
if (child) {
 while (child.children().first()) {
   child = child.children().first()
 }
 child.text().replace(/\s\s+/g, " ");
}

您可以使用 nth-child(1) select 或先 select child。

你可以这样使用

$("div div:nth-child(1) div:nth-child(1) ul:nth-child(1)").text()

一个天真的解决方案可能是

var text = $(">*:nth-child(1)".repeat(3), el).text().replace(/\s+/g, " ");

为了获得好的解决方案,我们需要更多上下文。比如标记是什么样的。