MST
星途 面试题库

面试题:JavaScript复杂关系表达式的优化

现有一个数组arr,里面存放了多个对象,每个对象有属性x和y。要求筛选出满足x大于y且x + y的结果小于100,同时x和y都为偶数的对象。请使用优化后的JavaScript代码实现,详细说明优化的关键点及性能提升原理。
50.1万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
const arr = [
    {x: 10, y: 8},
    {x: 25, y: 20},
    {x: 50, y: 48},
    {x: 60, y: 55},
    {x: 40, y: 38}
];

// 优化后的代码
const result = arr.filter(obj => {
    const {x, y} = obj;
    return x > y && x + y < 100 && x % 2 === 0 && y % 2 === 0;
});

console.log(result);

优化关键点及性能提升原理:

  1. 对象解构:在filter回调函数中,使用对象解构const {x, y} = obj获取xy属性,相较于每次访问obj.xobj.y,减少了属性查找的开销,提升了访问速度。
  2. 逻辑运算顺序:条件判断x > y && x + y < 100 && x % 2 === 0 && y % 2 === 0利用了JavaScript逻辑与(&&)的短路特性。如果x > yfalse,后续的x + y < 100x % 2 === 0y % 2 === 0就不会再计算,避免了不必要的计算,提高了性能。
  3. filter方法:使用数组的filter方法简洁明了地实现筛选逻辑,相较于手动遍历数组并逐个判断,filter方法在底层进行了优化,执行效率更高。