Necesito hacer una función que reciba 2 parámetros, el primero es una matriz de una lista de usuarios que debe contener nombre, apellido y números de teléfono, al menos 3 de esos usuarios deben comenzar con la letra "a", el El segundo parámetro es una devolución de llamada. Debe procesar la matriz y eliminar todos los usuarios cuyo nombre comience con la letra "a". Luego, envíe la nueva matriz procesada a la devolución de llamada. La devolución de llamada debe mostrar en la consola, la lista de todos los nombres, concatenando nombre y apellido.
const users = [{ name: 'Diego', lastname: 'Garcia', phone: '12343' }, { name: 'Camilo', lastname: 'Garcia', phone: '12343' }, { name: 'ana', lastname: 'Rodriguez', phone: '02343' }, { name: 'anastasia', lastname: 'Zapata', phone: '42343' }, { name: 'alejandra', lastname: 'Perez', phone: '52343' }]; const operation2 = (list) => { let x = []; let callback = {}; callback = list.find(element => element.name.charAt(0) == 'a'); let l = list.indexOf(callback) let g = list[l]; console.log(g) if (callback) { x = list.splice(l, 1) } return list } console.log(operation2(users))El código que hice no funciona, no está eliminando todos los nombres que comienzan con "a", solo elimina el primer objeto de la matriz.
Array.find solo encuentra la primera coincidencia, probablemente debería filtrar los elementos que no desea:
const result = list.filter(element => element.name.charAt(0) !== 'a'); const users = [{ name: 'Diego', lastname: 'Garcia', phone: '12343' }, { name: 'Camilo', lastname: 'Garcia', phone: '12343' }, { name: 'ana', lastname: 'Rodriguez', phone: '02343' }, { name: 'anastasia', lastname: 'Zapata', phone: '42343' }, { name: 'alejandra', lastname: 'Perez', phone: '52343' }]; function func(list, callback) { let users = list.filter(u => !u.name.toLowerCase().startsWith('a')); callback(users) } func(users, (users) => { console.log(users) })