首页 > 解决方案 > jQuery过滤和搜索带有对象的数组

问题描述

我正在努力解决我的问题...

首先,我通过 ajax 调用填充名为 sourceArray 的数组:

$.ajax({
            url: '/api/WebService/getRegistrants?url=' + url + '&start=' + start + '&end=' + end + '&token=' + projectsArray[$("#dropdown").val()].apiToken,
            type: 'GET',
            async: false,
            success: function (data) {

                var source = [];

                $.each(data.items, function (index, value) {

                    $.ajax({
                        url: '/api/WebService/getRegistrant?token=' + projectsArray[$("#dropdown").val()].apiToken + '&registrantId=' + value.registrantId,
                        type: "GET",
                        async: false,
                        success: function (data2) {



                            sourceArray.push({ registrationDate: data2.registrationDate.split("T")[0], source: data2.sourceType.sourceType });



                        }
                    });

                });

            }

        });

我的 sourceArray 为每个项目 registrationDate 和源返回一个包含 2 个对象的非唯一数组:

{registrationDate: "2018-07-04", source: “New”},
{registrationDate: "2018-07-04", source: “New”},
{registrationDate: "2018-07-04", source: “Old”},
{registrationDate: "2018-07-03", source: “New”},
{registrationDate: "2018-07-03", source: “Old”},
{registrationDate: "2018-07-03", source: “Old”}

现在我从 ajax 调用中得到了我需要的一切,我做了一个循环,但不处理数据,我在日期范围之间循环:

for (var d = new Date(startDate.replace("-", "/")); d <= now; d.setDate(d.getDate() + 1)) {

            var year = d.getFullYear();
            var month = d.getMonth() + 1;
            var day = d.getDate();

            if (month.toString().length < 2) month = '0' + month;

            if (day.toString().length < 2) day = '0' + day;

            console.log([year, month, day].join('-'));

        }

现在我要做的是获取源“新”的总数,其中registrationDate = console.log([年,月,日].join('-')),如果日期不相等,则返回0。

我真的希望这是有道理的。我的问题是如何过滤我的数组以获得“新”源的总数?

标签: jquery

解决方案


弄清楚了:

var find = $.grep(names, function(v) {
    return v.registrationDate === [year, month, day].join('-') && v.source === "New";
});

console.log(find.length);

推荐阅读