我有一个包含项目的数组。
我通过使用此函数收集表单数据来创建此数组:
view userName vals
当我在表单中有一个复选框并且检查时,我在数组中得到两个项目,其中一个具有值
真
而另一个
假
我正在使用jquery过滤器功能来过滤数组,但我无法弄清楚如何丢弃具有该值的项目
假
数组的不受欢迎的结果:
我的尝试:
getFormdata : function(form) {
var formdata = $(form)
.serializeArray()
.filter(function (item) {
return item.name != "__RequestVerificationToken"
});
return formdata;
}
但这会过滤掉所有元素,而不仅仅是我想删除的元素。
我该怎么做?
编辑:
如果有两个名称相同的项目,则只应删除项目nr 2。 如果我只有一个名为" IsActive"然后不应该删除nr 2
答案 0 :(得分:1)
如果有两个" IsActive"存在,删除虚假的。否则,不管它。 添加了验证令牌的删除。 移动检查值!=" false"在第二个滤波器之前可能使条件和增益性能短路。
var test = [
{ name: "__RequestVerificationToken", value: "whatever" },
{ name: "IsActive", value: "true" },
{ name: "updateRate", value: "sss" },
{ name: "IsActive", value: "false" },
{ name: "somethingElse", value: "weee" }
];
console.log(test.filter(function(element, index, array){
return element.name != "__RequestVerificationToken" && (
element.value != "false"
|| array.filter(function(element2){
return element2.name == element.name
}).length < 2
);
}));
var test = [
{ name: "__RequestVerificationToken", value: "whatever" },
{ name: "updateRate", value: "sss" },
{ name: "IsActive", value: "false" },
{ name: "somethingElse", value: "weee" }
];
console.log(test.filter(function(element, index, array){
return element.name != "__RequestVerificationToken" && (
element.value != "false"
|| array.filter(function(element2){
return element2.name == element.name
}).length < 2
);
}));
&#13;
答案 1 :(得分:0)
您可以先检查是否存在活动项目,然后将其用作以后检查过滤。
function filter(array) {
var isActive = array.some(function (item) {
return item.name === "IsActive" && item.value === "true";
});
return array.filter(function (item) {
return (
item.name !== "__RequestVerificationToken" && item.name !== "IsActive" ||
item.name === "IsActive" && (item.value === "true" || !isActive)
);
});
}
var data0 = [{ name: 'IsActive', value: 'true' }, { name: 'IsActive', value: 'false' }, { name: 'Name', value: 'sss' }, { name: 'UpdateRate', value: '121212' }, { name: '__RequestVerificationToken', value: 'true' }, { name: '__RequestVerificationToken', value: 'false' }],
data1 = [{ name: 'IsActive', value: 'false' }, { name: 'Name', value: 'sss' }, { name: 'UpdateRate', value: '121212' }, { name: '__RequestVerificationToken', value: 'true' }, { name: '__RequestVerificationToken', value: 'false' }];
console.log(filter(data0));
console.log(filter(data1));
.as-console-wrapper { max-height: 100% !important; top: 0; }