如何在JavaScript.filter()中使用多个条件?
我正在尝试使用来自的方法筛选数组,但似乎无法使其正常工作。我的设置如下所示,我希望得到一个空数组,因为数组中的一个对象与筛选条件匹配,但它会在控制台中返回原始数组。这里有什么我遗漏的吗如何在JavaScript.filter()中使用多个条件?,javascript,Javascript,我正在尝试使用来自的方法筛选数组,但似乎无法使其正常工作。我的设置如下所示,我希望得到一个空数组,因为数组中的一个对象与筛选条件匹配,但它会在控制台中返回原始数组。这里有什么我遗漏的吗 var myArr = [ { link_source_id: "act_0", link_source_name: "Hello World!", link_target_id: "obj_1",
var myArr = [
{
link_source_id: "act_0",
link_source_name: "Hello World!",
link_target_id: "obj_1",
link_target_name: "Document",
link_type: "activity-object-input"
}
]
var myFilter = {
link_source_id: "act_0",
link_target_id: "obj_1"
}
myArr = myArr.filter(function (item) {
for (var key in myFilter) {
if (
item[key] === undefined ||
item[key] !== myFilter[key]
)
return false;
}
return true;
});
console.log(myArr)
这里有一个例子
const obj = [
{id:1 , name:"Alice"} , {id:1,name:"Bob"}
]
const arr = obj.filter((oneObj)=>{
return (oneObj.id==1 && oneObj.name=="Alice")
})
console.log(arr); // will log [{id:1 , name:"Alice"}]
这里有一个例子
const obj = [
{id:1 , name:"Alice"} , {id:1,name:"Bob"}
]
const arr = obj.filter((oneObj)=>{
return (oneObj.id==1 && oneObj.name=="Alice")
})
console.log(arr); // will log [{id:1 , name:"Alice"}]
我将把这留给其他人,但根据OP中的评论回答我自己的问题。交换
true
和false
语句应该可以解决问题:
var myArr = [
{
link_source_id: "act_0",
link_source_name: "Hello World!",
link_target_id: "obj_1",
link_target_name: "Document",
link_type: "activity-object-input"
}
]
var myFilter = {
link_source_id: "act_0",
link_target_id: "obj_1"
}
myArr = myArr.filter(function (item) {
for (var key in myFilter) {
if (
item[key] === undefined ||
item[key] !== myFilter[key]
)
return true;
}
return false;
});
console.log(myArr)
我将把这留给其他人,但根据OP中的评论回答我自己的问题。交换
true
和false
语句应该可以解决问题:
var myArr = [
{
link_source_id: "act_0",
link_source_name: "Hello World!",
link_target_id: "obj_1",
link_target_name: "Document",
link_type: "activity-object-input"
}
]
var myFilter = {
link_source_id: "act_0",
link_target_id: "obj_1"
}
myArr = myArr.filter(function (item) {
for (var key in myFilter) {
if (
item[key] === undefined ||
item[key] !== myFilter[key]
)
return true;
}
return false;
});
console.log(myArr)
try=>
if()else返回true
-顺便说一句,它将返回数组
…如果其中一个键值匹配,您的条件将为true
-如果两者都匹配,它将返回false
,否则如果交换返回false/true,则始终为true
,然后返回一个空数组,因为条件都会为array@Dream_Cap我刚刚做到了,现在一切都正常了。我觉得我没有领会到这一点很傻。try=>if()否则返回true
-顺便说一句,它将返回数组
…如果其中一个键值匹配,您的条件将为true
,如果两者都匹配,它将返回false
否则总是true
如果您交换返回false/true,然后返回一个空数组,因为条件都会为array@Dream_Cap我刚刚做到了,现在一切都正常了。你的问题和答案中的代码片段都是正确的。一个过滤器是正的
(它过滤掉匹配项),另一个是负的
(它过滤掉不匹配项)。您的问题和答案中的代码片段都是正确的。一个过滤器是正的
(它过滤掉匹配项),另一个是负的
(它过滤掉不匹配项)。