tengo dos matrices
arr1 =[{name:'Net Banking', id:'NetBanking'},{name:'Debit Card', id:'DebitCard'},{name:'Credit Card', id:'CreditCard'}]y
arr2=['DebitCard','NetBanking']y quiero el resultado esperado a partir de arr1
arr1=[{name:'Debit Card', id:'DebitCard'}, {name:'Net Banking', id:'NetBanking'}]actualmente estoy usando -
arr1.filter(data=>arr2.includes(data.id))y estoy recibiendo retorno como
arr1 =[{name:'Net Banking', id:'NetBanking'},{name:'Debit Card', id:'DebitCard'}]significa hacer coincidir el elemento de arr2 con arr1 y devolverlo como arr1 con el mismo orden que arr2
o como puedo cambiar el indice basado en arr2 de arr1
Puede usar Array.map() junto con Array.find() para obtener la entrada deseada.
Demostración de trabajo:
const arr1 =[{name:'Net Banking', id:'NetBanking'},{name:'Debit Card', id:'DebitCard'},{name:'Credit Card', id:'CreditCard'}]; const arr2=['DebitCard','NetBanking']; const resArray = arr2.map((item) => arr1.find((obj) => obj.id === item)); console.log(resArray);Puede recorrer arr2 y para cada elemento encontrar el objeto relacionado con la misma id en la matriz arr1
Puedes confiar en
let arr1 =[{name:'Net Banking', id:'NetBanking'},{name:'Debit Card', id:'DebitCard'},{name:'Credit Card', id:'CreditCard'}]; let arr2=['DebitCard','NetBanking']; const result = arr2.reduce((accumulator, current) => { /* * For the current item of the loop search for item with * object.id === current */ return accumulator.concat(arr1.find(item => item.id === current)); },[]); console.log(result);