首页 > 解决方案 > 如何在 For 语句中运行 If 语句以仅显示数据集的特定行

问题描述

我正在运行下面的 for 循环来创建一个数据表(产品名称、要价、买入价、ID)。它适用于我拥有的数据,但我的数据有 100 行长,我们只需要显示其中的 25 个项目。我正在寻找一种方法来仅显示与我想要显示的 ID 号匹配的行(我的编程技能真的很生疏)。

显示所有数据行的工作代码:

           for(var i=0; i<priceDatas.length; i++){
                var bidprice = "";
                var askprice = "";
                
               
                if(priceDatas[i]["bidPrice"]){
                  bidprice = priceDatas[i]["bidPrice"] - (priceDatas[i]["bidPrice"] * 1.5 / 100);
                  bidprice = bidprice.toFixed(2);
                  bidprice = "$" + bidprice;
                } else if(priceDatas[i]["Bid %"]){
                  bidprice = priceDatas[i]["Bid %"] - (priceDatas[i]["Bid %"] * 1.5 / 100);
                  bidprice = bidprice.toFixed(2);
                  bidprice = bidprice + "%";
                }
                
                if(priceDatas[i]["askPrice"]){
                  askprice = priceDatas[i]["askPrice"] + (priceDatas[i]["askPrice"] * 1.5 / 100);
                  askprice = askprice.toFixed(2);
                  askprice = "$" + askprice;
                } else if(priceDatas[i]["Ask %"]){
                  askprice = priceDatas[i]["Ask %"] + (priceDatas[i]["Ask %"] * 1.5 / 100);
                  askprice = askprice.toFixed(2);
                  askprice = askprice + "%";
                }
                
                
                var column = "<tr>";
                column = column + "<td>" + priceDatas[i]["Display Name"] + "</td>" + "<td>" + `${bidprice? bidprice :"-"}` + "</td>" + "<td>" + `${askprice? askprice :"-"}` + "</td>" + "<td>" + priceDatas[i]["id"] + "</td>";
                column = column + "</tr>";
                table = table + column;
                
              }
              
            document.getElementById("price_table").innerHTML = "<tr class='header-table'><td>Product</td><td>Bid</td><td>Ask</td><td>ID</td>" + table + "</tr>";

我想添加一组 ID 以仅显示表上的特定项目而不是整个表。我以为我可以做这样的事情:

if(priceDatas[i]["id"] = "3081" || "54" || "56" ) { }

环绕上面的代码,但我把它放在 for 循环中的位置并不重要,它只是改变了 ID 列中显示的内容。我试过了===,它也不起作用。

如果 ID 是我列表中的数字之一,我怎么能说只显示column我表中的数字?

标签: javascriptjqueryjsonajax

解决方案


您可以使用filter功能Array来过滤您的priceDatas, 而forEach不是for

代码:


priceDatas.filter(row => ["3081", "54", "56"].includes(row["id"])).forEach(row => {
    let bidprice = "";
    let askprice = "";


    if (row["bidPrice"]) {
        bidprice = row["bidPrice"] - (row["bidPrice"] * 1.5 / 100);
        bidprice = bidprice.toFixed(2);
        bidprice = "$" + bidprice;
    } else if (row["Bid %"]) {
        bidprice = row["Bid %"] - (row["Bid %"] * 1.5 / 100);
        bidprice = bidprice.toFixed(2);
        bidprice = bidprice + "%";
    }

    if (row["askPrice"]) {
        askprice = row["askPrice"] + (row["askPrice"] * 1.5 / 100);
        askprice = askprice.toFixed(2);
        askprice = "$" + askprice;
    } else if (row["Ask %"]) {
        askprice = row["Ask %"] + (row["Ask %"] * 1.5 / 100);
        askprice = askprice.toFixed(2);
        askprice = askprice + "%";
    }


    let column = "<tr>";
    column = column + "<td>" + row["Display Name"] + "</td>" + "<td>" + `${bidprice ? bidprice : "-"}` + "</td>" + "<td>" + `${askprice ? askprice : "-"}` + "</td>" + "<td>" + row["id"] + "</td>";
    column = column + "</tr>";
    table = table + column;
})


推荐阅读