使用javascript找到最大的数字

时间:2014-03-23 02:48:42

标签: javascript regex

我需要在网页中找到最大的数字(这不是我的网页)。 我需要javascript吗?

首先,我需要从所有 SPAN.f 元素中获取值。然后,我必须将数字与它们进行比较以找出最大值。 怎么样?

假设我从所有 SPAN.f 元素中获得220 - 340 - 480 × 360 - 25/7/2012

我需要突出显示480,但我不希望/2012突出显示,因为它是日期的一部分。我的意思是,我想突出显示480,而不是/2012

我使用GreaseMonkey和Firefox Nightly 22

这是脚本,但它对我不起作用:

 // ==UserScript==
 // @name MAX NUMBER in page
 // @include https://www.google.com/search*
 // @version 1
 // @grant none
 // ==/UserScript==

 var spans = document.querySelectorAll("SPAN.f");
 var max = -Infinity;
 var maxSpan;
 Array.prototype.forEach.call(spans, function(span) {
 var val = Number(span.textContent);
 if (max < val)
 {
 max = val;
 maxSpan = span;
 }
 });
 if (maxSpan) maxSpan.style.backgroundColor = "yellow";

尝试将此页面中的代码放入此链接: https://www.google.com/search?hl=es&tbs=sbi%3AAMhZZitcQmshs1XQVAv0-EH8Ix_18bqev3_1smHm0uRMYGzjaSYpDr6KHQ_1tWEwNyvZGPus4-VWnfO9P9071ZllBMIC3amGAveNcz_1uYWteP9OKZ1Si1Yz0urBuyIWQbBTQIue4Gntn5J8FIxaLI1kEHMdI2BIh6mrM6YGiMBT6DJyLlW4K-1kE0n_1d2fnXoNxKDd4jM034f9ctLfUYb4WvSaptVZknw_1jhHBFu9HeINrN15ha7k9Kzz1Ifm_1P5y7Vxws_1Qjr48P-rXcoqneksiRnfQyXwTGJeuMAD0wtgNnXubqYgzrPkxbZ-BonJ9Hgxvy5pv6lfEsGIuNzrtxd6QFdDKAP5keREmQ&ei=vTkuU87gBKay2wWU0IHoBg&ved=0CAgQiBw&biw=1024&bih=624&dpr=1

2 个答案:

答案 0 :(得分:1)

24/Dec/1789不是有效数字,但应该是字符串,其他是数字,你可以做

var biggest = Math.max(100, 220, 340);

如果你得到的是一个字符串,你可以做

var str = '100 - 220 - 340 - 24/Dec/1789';

var biggest = Math.max.apply(null, str.split('-').filter(function(x) {
    return !isNaN(x);
}));

FIDDLE;

答案 1 :(得分:0)

我想你的意思是找到包含SPAN类的f元素中包含的最大数字(这就是语法SPAN.f所代表的含义)。 如果是这样,您不需要正则表达式,甚至不需要对值进行排序。只需在每个值上迭代一次即可找到最小值。 像这样:

var spans = document.querySelectorAll("SPAN.f");
var max = -Infinity;
var maxSpan;
Array.prototype.forEach.call(spans, function(span) {
    var val = Number(span.textContent);
    if (max < val)
    {
        max = val;
        maxSpan = span;
    }
});
if (maxSpan) maxSpan.style.backgroundColor = "yellow";

小提琴: http://jsfiddle.net/C35W6/