如何优化基于for循环的JavaScript汽车对象分组代码(命令式风格)
命令式风格优化汽车数组分组代码
原代码的核心逻辑没问题,但部分写法可以更直观,减少困惑。以下是优化后的命令式实现:
const cars = [ { name: 'BMW', year: 2000 }, { name: 'Audi', year: 2000 }, { name: 'BMW', year: 1515 }, { name: 'BMW', year: 1111 }, { name: 'Mercedez Benz', year: 2000 }, { name: 'Audi', year: 2017 }, { name: 'Honda', year: 2000 }, ]; const result = {}; for (let i = 0; i < cars.length; i++) { const car = cars[i]; const brandGroup = result[car.name]; if (!brandGroup) { result[car.name] = [car]; } else { brandGroup.push(car); } } console.log('result', result);
优化说明
- 减少重复属性访问:把当前循环的
cars[i]存入变量car,同时取出result[car.name]到brandGroup,避免多次读取相同属性,代码更简洁,也能小幅提升性能。 - 简化初始化逻辑:原代码用
[result[cars[i].name]] = [[cars[i]]];这种解构写法完全没必要,直接赋值[car]创建初始数组,可读性更强,不会造成理解困惑。 - 逻辑更清晰:通过变量名明确每一步的意图,比如
brandGroup直接指代当前品牌的分组数组,无需反复解读属性访问的含义。
内容的提问来源于stack exchange,提问作者Netty
相关产品推荐
相关产品推荐

