我有一个函数可以基于另一个(myFilter)过滤对象数组(数据)。如果所需的对象数组(myFilter)具有较宽的格式,则该过滤器功能可完美工作。这有效:
[{ rep_name: "John", the_task: "Cold Call" }]
字段名称(rep_name)和值(John)来自动态添加的复选框。因此,我循环使用选中的复选框来建立过滤条件,以尝试通过以下方法建立过滤功能所需的对象数组:
$('.chk_filter').each(function (a, b) {
if ($(this).is(":checked")) {
var f = $(this).data("field");
var v = $(this).val();
var item = {}
item[f] = v;
myFilter.push(item);
}
});
这是减少较大对象数组(在过滤器中具有相同字段和值)的函数:
data = data.filter(function (i) {
return myFilter.some(function (j) {
return !Object.keys(j).some(function (prop) {
return i[prop] != j[prop];
});
});
});
console.log(data);
我的问题是,当我在JQuery的每个循环中构建对象数组时,会将每个对象作为行推送。我明白了:
[{rep_name: "John"}, {the_task: "Cold Call"}
当我需要这个时:
[{ rep_name: "John", the_task: "Cold Call" }]
希望有人可以像上面那样阐明对象的格式。