如何将判断数组长度后执行push或赋值的代码改写为单行语句?
对应的单行实现方案
当然可以!你这段代码的逻辑完全可以用单行写法实现,这里给你两种贴合原逻辑的方案,还补充了一种常见的数组合并场景写法(怕你可能是想合并数组而非push单个元素):
1. 严格对应原逻辑的单行写法
原代码的逻辑是:若this.selectedUsersToAdd不为空数组,就把selectedUsersToAdd作为单个元素追加到末尾;否则直接将this.selectedUsersToAdd赋值为selectedUsersToAdd。用三元运算符结合展开语法可以写成:
this.selectedUsersToAdd = this.selectedUsersToAdd.length ? [...this.selectedUsersToAdd, selectedUsersToAdd] : selectedUsersToAdd;
或者用concat方法,效果一致:
this.selectedUsersToAdd = this.selectedUsersToAdd.length ? this.selectedUsersToAdd.concat(selectedUsersToAdd) : selectedUsersToAdd;
2. 补充:若selectedUsersToAdd是数组,想合并而非追加单个元素
如果你的selectedUsersToAdd本身是一个数组,原代码的push会把整个数组作为单个元素插入,这可能不是你想要的。如果是想合并两个数组,单行写法可以改成:
this.selectedUsersToAdd = this.selectedUsersToAdd.length ? [...this.selectedUsersToAdd, ...selectedUsersToAdd] : selectedUsersToAdd;
这里用了双重展开语法,把两个数组的元素都平铺到新数组里,再赋值给目标变量。
小提示:这几种写法都是创建新数组后赋值,和原代码中
push修改原数组的效果在最终结果上是一致的,但如果有其他地方引用了原数组的话,需要注意引用关系的变化哦~
内容的提问来源于stack exchange,提问作者Aranganathan
相关产品推荐
相关产品推荐

