重构方法链 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, " ");
为了获得好的解决方案,我们需要更多上下文。比如标记是什么样的。
我用一堆嵌套方法调用一个函数,我正在使用名为 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, " ");
为了获得好的解决方案,我们需要更多上下文。比如标记是什么样的。