我有两个数组。。。
var arr3 = [];
$('td:nth-child(2)').each(function() {
arr3.push($(this).text());
});
//console.log(arr3);
var arr4 = [];
$('td:nth-child(6)').each(function() {
arr4.push($(this).text());
});
//console.log(arr4);
这些收集了一些我想要的图表数据。我的目标是比较两个数组,看看对于每个给定的位置,arr3中的值是否大于或等于arr4中的值。
昨天一切似乎都正常,但今晚我稍微改变了一下数据,现在它说有些事情是真的,但事实并非如此。
arr3 = ["0", "0", "30"]
arr4 = ["150", "150", "140"]
所以0 < 150
,0 < 150
,它应该是30 < 140
,但我的循环说30 >= 140
。
这是我的循环:
for (var i = 0; i < arr3.length; i++) {
if (arr3[i] >= arr4[i]) {
console.log(arr3[i] + " is >= " + arr4[i]);
var bearned2 = $('.g2bonus')[i];
$(bearned2).append(' ✔');
} else {
console.log(arr3[i] + " is < " + arr4[i]);
}
}
我试着对此进行研究,发现了一些闭包错误,但我不太理解,也无法对我的情况进行适当的修复。我尝试了这个循环,但它只报告第一次比较,而没有报告其他两次:
for (var i = 0; i < arr3.length; arr3++) {
(function(index) {
if (arr3[i] >= arr4[i]) {
console.log(arr3[i] + " is >= " + arr4[i]);
var bearned2 = $('.g2bonus')[i];
$(bearned2).append(' ✔');
} else {
console.log(arr3[i] + " is < " + arr4[i]);
}
})(i);
}
有什么帮助吗?非常感谢。
您需要将数组中数字的字符串表示转换为整数/数字,以便不等式正确工作。As:
"30" >= "140"
是真
但是
30 >= 140
为假。
要做到这一点,只需在表示数字的字符串前面添加一个+
,即可将其转换为数字(整数、浮点等(
参见下面的工作示例:
var arr3 = ["0", "0", "30", "100"];
var arr4 = ["150", "150", "140", "0"];
for (var i = 0; i < arr3.length; i++) {
if (+arr3[i] >= +arr4[i]) { // Add + infront of arr3[i] and arr4[i] to convert to numbers
console.log(arr3[i] + " is >= " + arr4[i]);
var bearned2 = $('.g2bonus')[i];
$(bearned2).append(' ✔');
} else {
console.log(arr3[i] + " is < " + arr4[i]);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
此外,我在末尾添加了另一个检查,以表明它不会为每个值输出false,并且您的检查正在工作(100 >= 0
是true(