JS - Filtrare array cu array

Structura data exemplu mi s-a parut cunoscuta, si aveam si motiv: Valori distincte dintr-o matrice cu obiecte. In aceeasi ordine de idei postata de @navaru in thread-ul anterior, (in continuare) iti lipseste un minim de cunostinte de baza, fapt care se vede in thread-ul curent.

Ce nu merge? Nu intoarce nimic? Intoarce valori eronat? A luat foc casa?

Codul postat de @foobaz256 este functional, la mijloc fiind vorba de (pe scurt) iteratia prin doua array-uri - arr1, respectiv arr1.*.IdPlanificare, scapam de o a treia iteratie prin arr2 prin Array.prototype.includes().

Parerea mea este ca fie date puse de tine drept exemplu nu corespund cu datele tale - spre exemplu, id-urile din IdPlanificare sau arr2 sunt de tip string, iar tu cauti dupa un int, sau vice-versa.
image

Ce vreau eu sa spun prin gramada asta de cuvinte, este sa incerci in continuare. Sunt lucruri simple, de care te vei lovi restul carierei (daca faci/vei face asta in continuare). Ia-o iterativ, ia-o la mana, si nu mai copia toate raspunsurile de pe net.

let arr1 = [ { IdClient: 999, IdPlanificare: [1,2,3,4] },  { IdClient: 888, IdPlanificare: [7,8,1] }, { IdClient: 777, IdPlanificare: [4,5,6] }];
let arr2 = [1,8,3];

arr1.forEach(item => { // trecem prin arr1, luam obiectele la rand
  console.log({item}); // afisam obiectul curent

  item.IdPlanificare.forEach(idPlanificare => { // trecem prin toate id-urile de planificare
    console.log({idPlanificare, tip: typeof idPlanificare}); // afisam id-ul, cat si tipul lui, poate am sarit peste ceva in consola

    // facem cast "fortat" al id-ului la string prin concatenarea variabilei cu un string gol,
    // si apoi obtinem un numar in baza 10
    let idPlanificareCaNumar = parseInt(idPlanificare + '', 10);

    // verificam daca arr2 contine _fie_ id-ul de planificare asa cum il avem, fie ca numar (obligatoriu)
    if (arr2.includes(idPlanificare) || arr2.includes(idPlanificareCaNumar)) {
      console.log('gasit item', item);
    }
  });
});

Bineinteles, metoda de mai sus va afisa duplicat intrarile daca exista mai multe id-uri planificare corecte, dar este strict ca model educational (console.log, debugging-ul saracului).

4 Likes