jquery - 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 + '®istrantId=' + 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。
我真的希望这是有道理的。我的问题是如何过滤我的数组以获得“新”源的总数?
解决方案
弄清楚了:
var find = $.grep(names, function(v) {
return v.registrationDate === [year, month, day].join('-') && v.source === "New";
});
console.log(find.length);
推荐阅读
- arrays - 如何声明将与嵌套对象一起使用的模型?
- javascript - 图像未在带有参数的路线上加载,但在没有参数的路线上有效
- html - 具有指向 URL 的响应式图像链接
- apache-kafka - 分区的高水位线实际上是否比分区中最后一条消息的偏移量大一个?
- php - 当在 php 中满足 if 条件时,将复选框设置为“已选中”
- r - 输出/下一个命令提示符覆盖 R 中的长命令
- sql - 如何将约束添加到创建表语句中?
- excel - Excel没有删除所有选定的行
- postgresql - 没有 FROM 的内部查询
- javascript - 单击 href 即可更新 iFrame src