按条件保存数组中的不同元素



如何根据条件保存数组中的元素?在下面的数组中,如果我通过了一个年龄,它会返回具有满足该条件的元素的数组,但如果我通过的年龄不存在,或者在调用函数时没有发生任何事情,我如何将array1的所有元素添加到array2

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);

不确定这是否是您想要的,但您可以使用Array.prototype.some(MDN文档(检查年龄是否在阵列中

const getDatos = (age) => {
if (array1.some(data => data.age === age)) {
return array1.filter(data=> data.age === age);
} else {
return array1;
}
}

编辑:根据Sebastian Simons的评论,这种方法更好

const getDatos = (age) => {
const results = array1.filter(data => data.age === age);
return results.length > 0 ? results : array1;
}

您可以使用三元运算符?来检查filter返回的数组的长度。如果找到任何匹配项,则返回它们,否则返回所有记录。

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 records

最新更新