Tengo 2 matrices, la estructura de la primera matriz es:
items: [ { name: "a", items: [ { name: "jack" }, { name: "jose" }, ] }, { name: "b", items: [ { name: "lara" }, { name: "jo" }, ] }, { name: "c", items: [ { name: "andy" }, { name: "hary" }, ] } ]
y la segunda matriz:
number: [ 0: [0, 1], 1: [1], 2: [0] ]
¿Cómo filtrar "elementos" por "número" y cómo se puede obtener tal salida? (la mejor solucion)
{["jack", "jole"],["jo"],["andy"]}
Unos pocos mapas lo harían:
el resultado que desea no es JS válido, así que hice una matriz anidada
const arr1 = [{ name: "a", items: [{ name: "jack" }, { name: "jose" }, ] }, { name: "b", items: [{ name: "lara" }, { name: "jo" }, ] }, { name: "c", items: [{ name: "andy" }, { name: "hary" }, ] } ], numbers = [ [0, 1], [1], [0] ]; const res = numbers .map((arr, i) => arr .map(key => arr1[i].items[key].name) ) console.log(res)
Si su variable numérica tiene que ser un objeto.
let items = [ { name: "a", items: [{ name: "jack" }, { name: "jose" }] }, { name: "b", items: [{ name: "lara" }, { name: "jo" }] }, { name: "c", items: [{ name: "andy" }, { name: "hary" }] } ]; let number = { 0: [0, 1], 1: [1], 2: [0] }; let result = [] for (const [key, value] of Object.entries(number)){ let names = [] value.forEach(value => { names.push(items[key].items[value].name) }) result.push(names) } console.log(result)