如何从JavaScript数组中筛选出包含指定Type属性的对象
错误原因分析
你原有筛选逻辑不生效的核心原因是:没有Type属性的对象读取该属性时返回的是undefined,而undefined !== null的判断结果为true,因此所有数组元素都满足判断条件被返回。
正确筛选方案
根据不同的业务场景可以选择以下几种实现:
方案1:
hasOwnProperty严格判断(最推荐)
不会受原型链同名属性干扰,也能兼容Type属性值为假值(0、false、空字符串等)的场景:var newVal = arr.filter(x => x.hasOwnProperty('Type'));方案2:判断属性值不为
undefined
适合确认不会手动给Type属性赋值为undefined的场景,写法更简洁:var newVal = arr.filter(x => x.Type !== undefined);方案3:
in运算符判断
适合需要匹配原型链上继承的Type属性的场景:var newVal = arr.filter(x => 'Type' in x);
如果你的业务中Type属性的值永远为真值,也可以用更简短的写法:
var newVal = arr.filter(x => x.Type);
内容的提问来源于stack exchange,提问作者uduwaras
相关产品推荐
相关产品推荐

