如何实现cookieLoversOnly函数:用.filter过滤含favoriteCookie键的对象
嘿,这事儿超简单!咱们直接用数组的.filter方法配合属性检查就能搞定。下面给你两种实用的实现方式:
方法1:用hasOwnProperty检查自身属性
这个方法会严格校验对象自身是否拥有favoriteCookie键(不会考虑原型链上继承的属性),适合需要严谨校验的场景:
function cookieLoversOnly(peopleArray) { // 过滤出拥有favoriteCookie自身属性的对象 return peopleArray.filter(person => person.hasOwnProperty('favoriteCookie')); }
方法2:用in操作符检查属性(含原型链)
如果你的场景允许包含原型链上的favoriteCookie属性,用in操作符会更简洁:
function cookieLoversOnly(peopleArray) { // 过滤出存在favoriteCookie属性的对象(包括原型链继承的) return peopleArray.filter(person => 'favoriteCookie' in person); }
实际例子演示效果
假设你有这样的输入数组:
const folks = [ { name: 'Luna', favoriteCookie: 'Snickerdoodle' }, { name: 'Jake' }, { name: 'Mia', favoriteCookie: 'Peanut Butter' }, { name: 'Leo', hobby: 'Hiking' } ];
调用cookieLoversOnly(folks)后,会得到结果:
[ { name: 'Luna', favoriteCookie: 'Snickerdoodle' }, { name: 'Mia', favoriteCookie: 'Peanut Butter' } ]
两种方法都能满足你的需求,选哪种就看你要不要考虑原型链的属性啦~
内容的提问来源于stack exchange,提问作者Devin Bowen
相关产品推荐
相关产品推荐

