如何用替换和拆分来缩短过滤功能



我使用了一个与replace((和split((相结合的过滤函数。看起来像这个

jQuery('table .abc').filter((i, el) => jQuery(el).text(jQuery(el).text().replace('a', 'b').split(' ')[0] + ' ' + jQuery(el).text().replace('a', 'b').split(' ')[1]))

有没有办法缩短它,这样我就不必使用相同的替换和拆分功能两次了?因为我只需要组合[0]和[1]。

缩短代码

jQuery('table .abc').filter((i, el) => 
jQuery(el).text(jQuery(el).text().replace('a', 'b').split(' ')[0] 
+ ' ' 
+ jQuery(el).text().replace('a', 'b').split(' ')[1]))

您可以使用.text()的重载,它接受一个函数,并为选择中的每个元素调用该函数(这就是您正在做的,但更简洁(。

由于看起来你只取前两个单词,你也可以使用.slice(0,1)给予:

$("table .abc").text((i,txt) => txt.replace("a","b").split(" ").slice(0, 2).join(" ") );

工作示例:

$("table .abc").text((i, txt) => txt.replace("a", "b").split(" ").slice(0, 2).join(" "));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr>
<td class='abc'>This is more than two words</td>
</tr>
<tr>
<td class='abc'>Here is a second line</td>
</tr>
<tr>
<td class='abc'>OneWord</td>
</tr>
</table>

最新更新