Angular项目中如何高效为数组元素按条件批量添加category属性
实现方案
200~300条的数据量级极小,原生数组方法已经可以满足最高性能要求,以下分两种常用场景给出实现:
场景1:允许原地修改原数组(性能最高)
直接遍历数组为每个对象新增属性即可,时间复杂度O(n),额外空间开销O(1),是内存占用最低的方案:
data.forEach(item => { item.category = item.sampleData.length > 0 ? item.status : 'on hold'; })
场景2:Angular OnPush变更检测场景(不可变更新)
如果你的组件使用了ChangeDetectionStrategy.OnPush优化,需要返回新数组触发视图更新,可以用map做不可变处理,时间复杂度O(n):
data = data.map(item => ({ ...item, category: item.sampleData.length > 0 ? item.status : 'on hold' }))
补充说明
两种方案都是当前场景下的最优实现:
- 原生数组方法已经经过JS引擎高度优化,不需要额外引入第三方处理库,也不需要手动写for循环,可读性和性能都达标
- 300条数据的处理耗时在微秒级,不存在性能瓶颈,可根据自己的业务场景选择对应方案
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

