MST

星途 面试题库

面试题:JavaScript 逻辑操作符在复杂数据结构中的应用及性能优化

有一个包含多个对象的数组,每个对象具有多个属性,其中一个属性 `isValid` 为布尔值,另一个属性 `score` 为数字。请使用逻辑操作符和合适的数组方法,筛选出 `isValid` 为 `true` 且 `score` 大于 80 的对象,并对筛选过程进行性能优化分析,说明逻辑操作符在其中对性能的影响。
30.1万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

代码实现

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

性能优化分析

  1. 使用 filter 方法filter 方法会遍历数组中的每一个元素,并根据回调函数的返回值决定是否保留该元素。在这个场景下,filter 方法一次遍历就能完成筛选任务,避免了多次循环带来的性能损耗。
  2. 逻辑操作符 &&:逻辑与操作符 && 具有短路特性。在 obj.isValid && obj.score > 80 这个表达式中,首先会判断 obj.isValid。如果 obj.isValidfalse,那么整个表达式会立即返回 false,不会再去判断 obj.score > 80。这在性能上有很大的优势,因为如果 isValidfalse,就无需再进行 score 的比较操作,减少了不必要的计算,特别是当 score 的比较操作可能相对复杂时,这种短路特性带来的性能提升更为明显。

综上所述,通过 filter 方法结合逻辑与操作符 && 的短路特性,实现了高效的筛选操作,提升了性能。