MST

星途 面试题库

面试题:JavaScript 关系表达式逻辑判断之专家难度

在JavaScript中,实现一个函数`complexLogic`,该函数接收一个对象数组作为参数,数组中的每个对象都有`num1`和`num2`两个属性。函数需要对数组中的每个对象进行如下逻辑判断:如果`obj.num1 > 50` 且 `obj.num2 < 100`,或者 `obj.num1 + obj.num2` 是3的倍数,就将该对象的`result`属性设为`true`,否则设为`false`。最后返回这个修改后的对象数组。请写出完整的函数代码,并说明在处理大型数组时,如何优化逻辑判断过程以提高性能。
21.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
function complexLogic(arr) {
    return arr.map(obj => {
        if ((obj.num1 > 50 && obj.num2 < 100) || ((obj.num1 + obj.num2) % 3 === 0)) {
            obj.result = true;
        } else {
            obj.result = false;
        }
        return obj;
    });
}

处理大型数组时的性能优化

  1. 减少操作次数:在条件判断中,尽量避免重复计算。例如,如果obj.num1 + obj.num2的结果在判断中多次使用,可以先计算并存储这个结果,减少重复加法运算。
  2. 使用更高效的算法:如果数组元素有一定的规律或分布特点,可以考虑使用更适合的算法。例如,如果数组是有序的,可以利用这一点提前结束某些判断。
  3. 分批处理:将大型数组分成多个较小的数组进行处理,这样可以减少单次处理的数据量,降低内存压力。处理完一批后再处理下一批,最后合并结果。
  4. 并行处理:在支持并行计算的环境(如Web Workers在浏览器环境中),可以将数组分割成多份,并行处理不同部分,最后合并结果,提高整体处理速度。