Javascript ES6过滤器内部过滤器
这是怎么回事?我很难理解这一点 const arr1=[{id:1,name:jhon},{id:2,name:max},{id:3,name:fer}]; 常数arr2=[8,9]; var diffArray=arr2.filterx=>!arr1.filtery=>y.id==x.length; console.logdiffArray 从filter方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。 Code x=>某些_代码称为箭头函数,可以转换为:functionx{return some_Code} 基本上,这里要做的是arr2.filter将返回所述arr2中通过条件的所有元素。这里的条件是,过滤后的arr1的长度必须为零,这意味着未找到匹配项。作为数值的数组长度可以用作真/假,并且可以用!。这就是这里发生的事情:Javascript ES6过滤器内部过滤器,javascript,Javascript,这是怎么回事?我很难理解这一点 const arr1=[{id:1,name:jhon},{id:2,name:max},{id:3,name:fer}]; 常数arr2=[8,9]; var diffArray=arr2.filterx=>!arr1.filtery=>y.id==x.length; console.logdiffArray 从filter方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。 Code x=>某些_代码称为箭头函数,可以转换为:functionx{
arr1.filter(y => y.id === x) // means, give me elements of arr1, that are the same as in array 2
arr1.filter(y => y.id === x).length // means, the length of said array of elements
!arr1.filter(y => y.id === x).length // means, if length == 0 make it true and if more than 0 -> make it false
从filter方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
Code x=>某些_代码称为箭头函数,可以转换为:functionx{return some_Code}
基本上,这里要做的是arr2.filter将返回所述arr2中通过条件的所有元素。这里的条件是,过滤后的arr1的长度必须为零,这意味着未找到匹配项。作为数值的数组长度可以用作真/假,并且可以用!。这就是这里发生的事情:
arr1.filter(y => y.id === x) // means, give me elements of arr1, that are the same as in array 2
arr1.filter(y => y.id === x).length // means, the length of said array of elements
!arr1.filter(y => y.id === x).length // means, if length == 0 make it true and if more than 0 -> make it false
简化的
常数arr1=[{
id:1,
姓名:jhon
}, {
id:2,
姓名:马克斯
}, {
id:3,
姓名:fer
}];
常数arr2=[8,9];
var diffArray=arr2.filterx=>{
让元素SoFarry2PresentArray1=arr1.filtery=>{
返回y.id==x
};
如果元素SoFarry2持续存在,则1.length>0{
返回错误
}否则{
返回true;
}
//`return!length;`如果长度>0,则返回false
};
console.logdiffArray简化
常数arr1=[{
id:1,
姓名:jhon
}, {
id:2,
姓名:马克斯
}, {
id:3,
姓名:fer
}];
常数arr2=[8,9];
var diffArray=arr2.filterx=>{
让元素SoFarry2PresentArray1=arr1.filtery=>{
返回y.id==x
};
如果元素SoFarry2持续存在,则1.length>0{
返回错误
}否则{
返回true;
}
//`return!length;`如果长度>0,则返回false
};
console.logdiffArray甚至更短
let diffArray = arr2.filter(x => arr1.filter(y => y.id === x).length > 0 ? false : true)
甚至更短
let diffArray = arr2.filter(x => arr1.filter(y => y.id === x).length > 0 ? false : true)
它只是检查8和9是否不作为arr1中的id键存在,如果不存在,则返回这些数组值。如果您将任何对象的id更改为8,您将看到只返回9,反之亦然。!arr1.filtery=>y.id==x.length->!arr1.somey=>y.id==x会更有效,因为它会在第一次成功匹配后终止数组的迭代。length在做什么?@palaѕѕѕ,仅供参考,这是糟糕的代码。内部过滤器应该是!arr1.somey=>y.id==x或arr1.everyy=>y.id!==所以它一知道答案就停止了。这是这篇文章的答案。它只是检查8和9在arr1中是否不作为id键存在,如果不存在,则返回这些数组值。如果您将任何对象的id更改为8,您将看到只返回9,反之亦然。!arr1.filtery=>y.id==x.length->!arr1.somey=>y.id==x会更有效,因为它会在第一次成功匹配后终止数组的迭代。length在做什么?@palaѕѕѕ,仅供参考,这是糟糕的代码。内部过滤器应该是!arr1.somey=>y.id==x或arr1.everyy=>y.id!==所以它一知道答案就停止了。这是这篇文章的答案