比较 javascript 或 jquery 中两种不同的数组类型

2024-01-01

我有两种不同的数组类型。其中一个是字符串数组,另一个是对象数组;

stringArray = ["P1", "P2", "P3"];
objectArray = [{ P: "P1", PO: 5}, { P: "P3", PO: 10}];

我想将对象数组放入表中。字符串数组元素必须是表头。

如果对象数组有P == "P1"将 5 放入单元格。否则将空单元格放入行中。

我尝试过这个,但这会放置多个空单元格。

这是我的代码“tKeys”= stringArray,“Ciktilar”= objectArray

var baslikEklendiMi = false;
var satirEkle = function(CalismaTipi, Ciktilar, tKeys)
{
    var satir = '<td>' + CalismaTipi + '</td>';
    $.each(tKeys, function (i, val) {
        if (baslikEklendiMi == false) {
            $("#tblBaslik").append("<th>" + val+ "</th>");
        }

        $.each(Ciktilar, function (j, obj) {
            if (val == obj.P) {
                satir += '<td><b>' + obj.PO+ '</b></td>';
            }
            else {
                satir += '<td></td>';
            }
        });
    });

    baslikEklendiMi = true;
    $("#tblListe").append('<tr>' + satir + '</tr>');
}

得到类似的东西:

|--|--|--|--|
|ct|P1|P2|P3|
|--|--|--|--|
|??|5 |  |10|
|--|--|--|--|

您的代码需要进行五处更改:

1)第7行(下):实例化emptyCell, 分配false;

2) 第 9 行:添加$("#tblBaslik").append("<th>ct</th>")考虑到CalismaTipi column,

3) 第25-27行:移动satir += '<td></td>'到外面的Ciktilar loop.

4) 第 22 行:分配true to emptyCell.

5) 第 18-19 行:重置emptyCell并退出Ciktilar loop.

var stringArray  = ["P1", "P2", "P3"];
var objectArray  = [{ P: "P1", PO: 5}, { P: "P3", PO: 10}];

var baslikEklendiMi = false;
var satirEkle = function(CalismaTipi, Ciktilar, tKeys)
{
    var emptyCell = false;                                // Line 7
    var satir = '<td>' + CalismaTipi + '</td>';
    $("#tblBaslik").append("<th>ct</th>");                // Line 9
    $.each(tKeys, function (i, val) {
        if (baslikEklendiMi === false) {
            $("#tblBaslik").append("<th>" + val+ "</th>");
        }

        $.each(Ciktilar, function (j, obj) {
            if (val == obj.P) {
                satir += '<td><b>' + obj.PO+ '</b></td>';
                emptyCell = false;                         // Line 18
                return false;
            }
            else {
              emptyCell = true;                            // Line 22
            }
        });
        if (emptyCell) {                                   // Line 24
            satir += '<td></td>';
        }
    });

    baslikEklendiMi = true;
    $("#tblListe").append('<tr>' + satir + '</tr>');
};
satirEkle('??', objectArray, stringArray);

您需要搬家的原因satir += '<td></td>';之外的Ciktilar循环是因为stringArray列表不直接对应objectArray列表。您想要检查所有stringArray元素来查找匹配项,如果 ALL 之后没有匹配项stringArray检查元素然后写入一个空单元格。所以,而不是写信给satir在循环中,设置一个emptyCell标志,并在循环后检查该标志。

JSBin 示例。 http://jsbin.com/nilabuxexa/edit?html,js,output

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较 javascript 或 jquery 中两种不同的数组类型 的相关文章

随机推荐