面试题答案
一键面试代码实现
const arr = [
{ isValid: true, score: 85 },
{ isValid: false, score: 70 },
{ isValid: true, score: 90 },
{ isValid: true, score: 75 },
{ isValid: false, score: 88 }
];
const result = arr.filter((obj) => obj.isValid && obj.score > 80);
console.log(result);
性能优化分析
- 使用
filter
方法:filter
方法会遍历数组中的每一个元素,并根据回调函数的返回值决定是否保留该元素。在这个场景下,filter
方法一次遍历就能完成筛选任务,避免了多次循环带来的性能损耗。 - 逻辑操作符
&&
:逻辑与操作符&&
具有短路特性。在obj.isValid && obj.score > 80
这个表达式中,首先会判断obj.isValid
。如果obj.isValid
为false
,那么整个表达式会立即返回false
,不会再去判断obj.score > 80
。这在性能上有很大的优势,因为如果isValid
为false
,就无需再进行score
的比较操作,减少了不必要的计算,特别是当score
的比较操作可能相对复杂时,这种短路特性带来的性能提升更为明显。
综上所述,通过 filter
方法结合逻辑与操作符 &&
的短路特性,实现了高效的筛选操作,提升了性能。