جاوااسکریپت - چگونه فیلتری بنویسیم که آرایهای از آرایهها را بررسی کند


آرایههای زیر را در نظر بگیرید:

 array1 = ["A","B", "C"];
 array2 = ["D", "E", "F"];
 array3 = ["G", "H", "I"];

 combined = [array1, array2, array3];
 select = ["A","H"];

من به یک فیلتر برای 'combined' بر اساس آرایه 'select' نیاز دارم که آرایه1 و آرایه3 را بازگرداند زیرا A در آرایه1 است و H در آرایه3.

این چیزی است که من امتحان کردهام (در تایپاسکریپت)

return routes.filter((route: any) =>  
             roles.some((role: string) =>
                 route.config.roles.some((routeRole: string) =>
                     routeRole === role)));

به نظر میرسد کار میکند، اما فقط برای اولین مورد در route.config.roles کار میکند.

پاسخ شماره ۱

از filter و some استفاده کنید:

function finder(combined, select) {
  return combined.filter(function (el) {
    return el.some(function (letter) {
      return select.indexOf(letter) > -1;
    });
  });
}

نسخه نمایشی