Проверьте, содержит ли массив объектов определенное значение с определенным именем свойства - PullRequest
0 голосов
/ 30 мая 2018

У меня есть таблица, в которой есть опции флажков для каждой / отдельной строки и опция «проверить все», чтобы выбрать все строки на текущей странице.

Они выглядят следующим образом:

  $(".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 ("has") или что-то еще?

Я пытался использовать метод "some" в 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;
    }

Но никто не работал ... Что я здесь не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...