gpt4 book ai didi

javascript - 如何使用 jQuery 按条件在 html 表上连续获取重复值

转载 作者:太空狗 更新时间:2023-10-29 15:07:13 25 4
gpt4 key购买 nike

我试图确定一个数字在表格行中连续重复了多少次。当发现 3 次或更多次出现时,我需要将 td 的颜色更改为红色,如下所示:

Expected result:

Expected result

我的正则表达式工作正常,但我无法获得正确的重复计数并更改 td 的颜色....

x = $("table").find("tr");
text = "";

x.each(function(line){
number = $(this).text();
check = checkNum(number);
console.log(checkNum(number));

if(check.length > 0){
repeats = check[0][1];
text += "Number "+number[check[0]['index']]+" was repeated "+repeats+ " times on line "+line+"<br>";
$('#results').html(text);
$(this).css('color', 'red');
}
});

function checkNum(num) {
var tempArray = [];
num = num.replace(/\s+/g,"_");
exp = new RegExp(/([0-9])\1{2,}/, "g");
ex = exp.exec(num);

if(ex){
tempArray.push(ex);
}

return tempArray;
}

请查看this fiddle

最佳答案

这是实现它的功能方法(没有正则表达式):

$("#results").html(
[].concat.apply(
$.map($("table tr"), function(tr, line){
return $(tr).children().get().reduceRight(function (acc, td, i) {
var txt = $(td).text();
if (txt === acc[0][0])
acc[0][1] = i; // Extend range
else
acc.unshift([txt, i, i+1]); // Add a new range
return acc;
}, [[null, 0, 0]])
.filter(function (range) { // Get the ranges that are long enough
return range[2] - range[1] >= 3;
})
.map(function (range) { // Map them to strings, and apply the styling
$(tr).children().slice(range[1], range[2]).css('color', 'red');
return "Number "+range[0]+" was repeated "+(range[2] - range[1])+ " times on line "+line;
})
})
).join("<br>")
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr><td>2</td><td>3</td><td>1</td><td>5</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td></tr>
<tr><td>0</td><td>5</td><td>1</td><td>1</td><td>8</td><td>3</td><td>3</td><td>3</td><td>4</td></tr>
<tr><td>0</td><td>4</td><td>1</td><td>5</td><td>8</td><td>7</td><td>6</td><td>3</td><td>4</td></tr>
<tr><td>5</td><td>2</td><td>2</td><td>2</td><td>2</td><td>9</td><td>2</td><td>2</td><td>0</td></tr>
<tr><td>1</td><td>4</td><td>4</td><td>4</td><td>2</td><td>4</td><td>4</td><td>4</td><td>4</td></tr>

</table>
<div id='results'>
</div>

关于javascript - 如何使用 jQuery 按条件在 html 表上连续获取重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45714160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com