¿Cómo puedo guardar elementos en una matriz según una condición? En el siguiente array si paso una edad me devuelve el array con los elementos que cumplen esa condición, pero si paso una edad que no existe o no pasa nada al llamar a la función como puedo sumar todos los elementos del array1 a matriz2
const array1 = [ { name: 'jose', country: 'argentina', age: 20 }, { name: 'pedro', country: 'brazil', age: 18 }, { name: 'andrea', country: 'mexico', age: 20 }, { name: 'luis', country: 'eu', age: 19 }, { name: 'nancy', country: 'mexico', age: 18 } ]; const getDatos = (age) => { const array2 = array2.filter(data=> data.age === age); console.log(array2 ) } getDatos(20);¿Puedes usar el operador ternario ? para verificar la longitud de la matriz devuelta por el filter . Si se encuentran coincidencias, devuélvalas; de lo contrario, devuelva todos los registros.
const all = [ { name: 'jose', country: 'argentina', age: 20 }, { name: 'pedro', country: 'brazil', age: 18 }, { name: 'andrea', country: 'mexico', age: 20 }, { name: 'luis', country: 'eu', age: 19 }, { name: 'nancy', country: 'mexico', age: 18 } ]; const getDatos = (age) => { let matches = all.filter(data => data.age === age); return (matches.length) ? matches : all; } console.log(getDatos(20)); // jose & andrea console.log(getDatos(99)); // all recordsNo estoy seguro de si esto es lo que desea, pero puede verificar si la edad está en la matriz usando Array.prototype.some ( documentación de MDN )
const getDatos = (age) => { if (array1.some(data => data.age === age)) { return array1.filter(data=> data.age === age); } else { return array1; } }EDITAR: Basado en el comentario de Sebastian Simons, este enfoque es mejor
const getDatos = (age) => { const results = array1.filter(data => data.age === age); return results.length > 0 ? results : array1; }