Javascript Array.filter无法按预期工作,并且是ILD代码
我有以下代码:Javascript Array.filter无法按预期工作,并且是ILD代码,javascript,Javascript,我有以下代码: var测试列表=[{ “信息”:“Dieses Feld Is ein Pflichtfeld.”, “元素”:{}, “方法”:“必需”, “名称”:“电子邮件” }, { “消息”:“Falscher代码!”, “元素”:{}, “方法”:“joeCode”, “名称”:“代码” } ]; var name=“code”, 方法=“joecodexcxc”; testList=testList.filter(x=>x.name!==name&&x.method!==meth
var测试列表=[{
“信息”:“Dieses Feld Is ein Pflichtfeld.”,
“元素”:{},
“方法”:“必需”,
“名称”:“电子邮件”
},
{
“消息”:“Falscher代码!”,
“元素”:{},
“方法”:“joeCode”,
“名称”:“代码”
}
];
var name=“code”,
方法=“joecodexcxc”;
testList=testList.filter(x=>x.name!==name&&x.method!==method);
log(testList)代码>您的条件对第二个对象的计算结果为false,因为name==“code”,因此我们有false&&true(其计算结果为false)。您可能打算使用| | | OR运算符。您很可能在寻找OR门|
在这个布尔表达式中
x.name!==名称和x.method!==方法
当x
是testList
中的第二个元素时。它评估为
“code”!==“代码”和“joeCode”!=“JoeCodexCxC”
这是false&&true
,这是false
——因此该对象被过滤掉
请尝试使用|
-
x.name!==名称| | x.method!==方法
或者,为了让情况更人性化,可以应用德·摩根定律
!(x.name==name&&x.method==method)
出了什么问题?猜测包含第一个元素的数组将被返回到您只需要| |而不是&&@william。是,将返回第一个元素。但是这不是错了吗,因为没有匹配的tox=>x.name!==名称和x.method!==方法?测试列表[0]。名称!==“代码”&&testList[0]。方法!==“JoeCodexCxC”,所以这是正确的过滤这达成了交易:!(x.name==name&&x.method==method)thx