Javascript 如何提取表中特定列的第二个最低值?

Javascript 如何提取表中特定列的第二个最低值?,javascript,jquery,json,parsing,Javascript,Jquery,Json,Parsing,我特别希望在市场上抽取除NPC以外的商品的最低价格 行总是被排序的,但有时NPC车间记录为零。如果此表总是按增量排序,并且第一行总是有NPC车间记录,则只需按如下方式修复代码: var rowText = $('tbody tr:eq(2) td:eq(2)').map(function() { return $(this).text(); }).get()[0]; window.alert(rowText); 它是有效的。 但是如果行可以不排序,并且可能有多个NPC商店记录,甚至零个NPC

我特别希望在市场上抽取除NPC以外的商品的最低价格


行总是被排序的,但有时NPC车间记录为零。

如果此表总是按增量排序,并且第一行总是有NPC车间记录,则只需按如下方式修复代码:

var rowText = $('tbody tr:eq(2) td:eq(2)').map(function() {
return $(this).text();
}).get()[0];

window.alert(rowText);
它是有效的。 但是如果行可以不排序,并且可能有多个NPC商店记录,甚至零个NPC商店记录,那么您需要更复杂的算法

更新

以下是“未排序”和“任意数量的NPC店铺记录”的代码:

代码:


行总是被排序的,但有时NPC商店记录为零。这很有效!唯一的问题是当我访问实际的网页时,脚本似乎没有加载这段代码。在运行脚本之前,您可能需要等待DOM(html)完全加载并生成?是的,这可能会起作用,但我更喜欢jQuery提供的其他“domReady”快捷方式,比如:另外,您似乎在外部脚本中有异常,您已经连接到JSFIDLE示例。如果我移除它,它就会开始工作
$('tbody tr:eq(2) td:eq(1)')
var price = null;
$("tbody tr").each(function(i,e){
    var $col1 = $(e).find("td:eq(0)"),$col2 = $(e).find("td:eq(1)");
    if ($col1.html().indexOf("NPC")===-1) {
        var rowPrice = parseFloat($col2.html().replace(",","."));
        if (!price || price.price>rowPrice)
            price = {
                name:$col1.find("a").html(),
                price: rowPrice
            };
    }
});

alert("Min price is:"+price.price+" from "+price.name);