本文介绍如何根据条件在数组中增加元素以及在对象中增加属性。
1 在数组中根据条件增加元素
如下代码展示了如何根据布尔类型变量 cond 来动态插入元素 'a' 到数组 arr 里。
const cond = false;
const arr = [
...(cond ? ['a'] : []),
'b',
];
// ['b']
这个技巧点在于扩展运算符 (...) 应用于数组时,如果应用于一个空数组时它什么都不做。
2 在对象中按条件增加属性
同样可以把扩展运算符应用到对象上。再次使用布尔类型变量 cond 来决定是否为对象 obj 增加一个属性 a:
const cond = false;
const obj = {
...(cond ? {a: 1} : {}),
b: 2,
};
// {b: 2}
如果扩展运算符应用到一个没有可枚举属性的对象上,那么它什么都不做:
3 其他方式
上述代码使用了扩展运算符,它很方便,只需要一个表达式就可以创建数组或者对象,缺点是让代码不太好理解。
另一种方式更好理解的方式是使用 push() 方法来构造数组:
const arr = [];
if (cond) {
arr.push('a');
}
arr.push('b');
这种方式容易理解,不过缺点是当数组元素很多时要重复这个步骤很多次,比较繁琐。