检查对象数组是否包含具有特定属性名称的特定值

时间:2018-05-30 12:52:33

标签: javascript jquery html arrays datatables

我有一个表,其中包含每个/每行的复选框选项和"检查所有"选择当前页面上的所有行。

他们看起来像是:

  $(".chkAll").click(function () {//check and uncheck all function
            if ($(this).is(':checked')) {
                table.rows().select(this.checked);
                var rowcollection = table.$("input:checkbox[class=checkItem]", { "page": "all" });
                rowcollection.each(function (index, elem) {
                   //$row.find('td:eq(2)').find('a:eq(0)').text($('.inputedTitle').val());
                    _SingleScannedItemIds.push(
                        {
                            "title": $(elem).attr("ebaytitle"),
                            "price": $(elem).attr("ebayprice"),
                            "itemid": $(elem).attr("ebayitemid"),

                        });
                    $(elem).prop("checked", true);
                    console.log(_SingleScannedItemIds);
                });
            }
            else {
                table.rows().deselect(this.checked);
                _SingleScannedItemIds = [];
                $('input:checkbox').removeAttr('checked');

            }
        });

其中_SingleScannedItemIds定义如下:

_SingleScannedItemIds = [];

现在我有一个数据表,我想在行渲染时检查这个对象数组是否包含这个特定的元素:

 "columns": [

                {

                "sWidth": "1%",
                "data": "ItemID",
                "name": "Checkbox",
                    "render": function (data, type, row) {
                     console.log(contains(_SingleScannedItemIds,"itemid"));
                    if (_SingleScannedItemIds.some(item => item.itemid=== row.itemid)) {
                            return 'checked';

                        }
                        return 'not checked';
                        console.log("not checked");
                    },
              "autoWidth": true
            }]

因此渲染的td有一个名为" itemid"的属性。我的对象数组也包含" itemid"属性..

现在我只需要匹配,如果它确实包含它为渲染的TD ...如果确实如此,我只是想在控制台中写出它像console.log("有&# 34;)或其他什么?

我尝试过使用"一些" javascript中的方法和以下方法:

function contains(a, obj) {
        for (var i = 0; i < a.length; i++) {
            if (JSON.stringify(a[i]) === JSON.stringify(obj)) {
                return true;
            }
        }
        return false;
    }

但没有人工作......我在这里做错了什么?

0 个答案:

没有答案