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