簡體   English   中英

如何使用數組條件過濾數組

[英]How to filter array with array condition

var students = ["Malcom", "Jayne"];
var persons = [
    {firstname : "Malcom", lastname: "Reynolds"},
    {firstname : "Kaylee", lastname: "Frye"},
    {firstname : "Jayne", lastname: "Cobb"}
];

我想用學生數組過濾(或映射,forEach隨便什么)人員數組。 學生數組是動態的,因此可以更改其長度。

有任何想法嗎?

可以使用filtersome來完成。

 var students = ["Malcom", "Jayne"]; var persons = [ {firstname : "Malcom", lastname: "Reynolds"}, {firstname : "Kaylee", lastname: "Frye"}, {firstname : "Jayne", lastname: "Cobb"} ]; console.log(persons.filter(person => students.some(student => student == person.firstname))) // An advice, maybe you want to put everything to lower case // to prevent a wrong result because of case mismatch // (eg "Malcom" !== "malcom"). // It would be: persons.filter(person => students.some(student => student.toLowerCase() === person.firstname.toLowerCase())) 

您可以使用SetArray#filter

 var students = ["Malcom", "Jayne"], persons = [{ firstname: "Malcom", lastname: "Reynolds" }, { firstname: "Kaylee", lastname: "Frye" }, { firstname: "Jayne", lastname: "Cobb" }], result = persons.filter(function (a) { return this.has(a.firstname); }, new Set(students)); console.log(result); 

ES6

 var students = ["Malcom", "Jayne"], persons = [{ firstname: "Malcom", lastname: "Reynolds" }, { firstname: "Kaylee", lastname: "Frye" }, { firstname: "Jayne", lastname: "Cobb" }], result = persons.filter((set => a => set.has(a.firstname))(new Set(students))); console.log(result); 

您應該能夠通過檢查他們的firstname是否在students數組中來過濾該數組:

persons.filter(function(person) { return students.indexOf(person.firstname) >= 0 });

為此,您可以使用filter()includes()

 var students = ["Malcom", "Jayne"]; var persons = [ {firstname : "Malcom", lastname: "Reynolds"}, {firstname : "Kaylee", lastname: "Frye"}, {firstname : "Jayne", lastname: "Cobb"} ]; var r = persons.filter(function(o) { return students.includes(o.firstname); }); console.log(r) 

var students = ["Malcom", "Jayne"];
var persons = [
    {firstname : "Malcom", lastname: "Reynolds"},
    {firstname : "Kaylee", lastname: "Frye"},
    {firstname : "Jayne", lastname: "Cobb"}
];
var filteredPersons = persons.filter(person => students.indexOf(person.firstname) > -1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM