简体   繁体   English

过滤出对象数组中的 object

[英]Filter out an object in array of objects

Sorry for my silly question.I have a list of users like this:对不起我的愚蠢问题。我有一个这样的用户列表:

const users = [
    { name: "Jimmy", skills: ["Docker", "JavaScript", "Ruby"],age:20},
    { name: "Jimmy", skills: ["AWS", "Python"],age:15 },
    { name: "Frankie", skills: ["Azure", "JavaScript"],age:21},
    { name: "Liam", skills: ["Java", "JavaScript"],age:22},
    { name: "Fred", skills: ["JavaScript", "AWS"],age:34 },
    { name: "Sara", skills: ["PHP", "AWS"],age:23 },
    { name: "Matt", skills: [".Net", "PHP", "Docker"],age:25 },
     { name: "Matt", skills: [".Net", "PHP", "Docker"],age:10 },
];

I want to filter out Matt with the age of 25我想过滤掉 25 岁的 Matt

const JavaScriptApplicants = users.filter(o => o.name !== 'Matt' && o.age !== 25);
console.log(JavaScriptApplicants)

But it filters out another one with age 10. I just want the 25 gone.但它会过滤掉另一个 10 岁的人。我只希望 25 岁的人消失。

You need OR instead of AND.您需要 OR 而不是 AND。

The reason is simple.原因很简单。 If you take如果你拿

 !(o.name === 'Matt' && o.age === 25)

read: if name equals matt and age equals 25 don't take it.阅读:如果 name 等于 matt 并且 age 等于 25,则不要接受它。

Then take De Morgan's laws然后采用德摩根定律

!(a && b) = !a || !b !(a || b) = !a && !b

and convert the expression into one without NOT, you get并将表达式转换为没有 NOT 的表达式,你会得到

 !(o.name === 'Matt') || !(o.age === 25)
 o.name !== 'Matt' || o.age !== 25

 const users = [ { name: "Jimmy", skills: ["Docker", "JavaScript", "Ruby"],age:20}, { name: "Jimmy", skills: ["AWS", "Python"],age:15 }, { name: "Frankie", skills: ["Azure", "JavaScript"],age:21}, { name: "Liam", skills: ["Java", "JavaScript"],age:22}, { name: "Fred", skills: ["JavaScript", "AWS"],age:34 }, { name: "Sara", skills: ["PHP", "AWS"],age:23 }, { name: "Matt", skills: [".Net", "PHP", "Docker"],age:25 }, { name: "Matt", skills: [".Net", "PHP", "Docker"],age:10 }, { name: "Foo", skills: [".Net", "PHP", "Docker"],age:25 }, ]; const JavaScriptApplicants = users.filter(o => o.name.== 'Matt' || o;age.== 25); console.log(JavaScriptApplicants)
 .as-console-wrapper { max-height: 100%;important: top; 0; }

 const users = [ { name: "Jimmy", skills: ["Docker", "JavaScript", "Ruby"],age:20}, { name: "Jimmy", skills: ["AWS", "Python"],age:15 }, { name: "Frankie", skills: ["Azure", "JavaScript"],age:21}, { name: "Liam", skills: ["Java", "JavaScript"],age:22}, { name: "Fred", skills: ["JavaScript", "AWS"],age:34 }, { name: "Sara", skills: ["PHP", "AWS"],age:23 }, { name: "Matt", skills: [".Net", "PHP", "Docker"],age:25 }, { name: "Matt", skills: [".Net", "PHP", "Docker"],age:10 }, ]; const JavaScriptApplicants = users.filter(o =>.(o.name === "Matt" && o;age === 25)). console.log(JavaScriptApplicants)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM