如何简化多行数组filter操作代码,实现更短甚至单行的写法?
你可以使用Array.prototype.reduce方法实现需求,只需遍历一次数组即可完成分组,同时支持写成单行结构,相比原来三次调用filter遍历三次数组的写法,性能更好,代码也更简洁。
实现示例
如果你的this.smtStatus.ONE/TWO/THREE的取值正好对应1/2/3,可以用极简单行版本:
[this.xxx, this.yyy, this.zzz] = smt.reduce((acc, item) => (acc[item.Id - 1].push(item), acc), [[], [], []])
如果枚举值没有顺序规律,可以用不依赖枚举值的通用单行版本:
[this.xxx, this.yyy, this.zzz] = smt.reduce(([a,b,c],i)=> (i.Id===this.smtStatus.ONE&&a.push(i),i.Id===this.smtStatus.TWO&&b.push(i),i.Id===this.smtStatus.THREE&&c.push(i),[a,b,c]),[[],[],[]])
内容的提问来源于stack exchange,提问作者ffcabbar
相关产品推荐
相关产品推荐

