如何根据userObject是否为空向数组中条件性添加对象
按需构建新数组的实现方案
原始数据与当前写法
初始数据
const array1 = [{id:1,name:'john'},{id:2,name:'peter'}]; const userObject={};
当前的数组构建方式
const newarray =[...array1, userObject];
需求说明
当userObject是空对象{}时,新数组仅保留array1的所有元素;若userObject包含属性,则将其追加到新数组末尾。
可行解决方案
方案1:条件扩展运算符
利用扩展运算符处理空数组的特性,结合空对象判断逻辑:
const newarray = [ ...array1, ...(Object.keys(userObject).length > 0 ? [userObject] : []) ];
方案2:数组concat方法
通过concat方法的特性,传入空数组不会改变原数组内容:
const newarray = array1.concat( Object.keys(userObject).length > 0 ? userObject : [] );
方案3:先复制再条件追加
可读性更强的写法,适合后续可能扩展逻辑的场景:
const newarray = [...array1]; if (Object.keys(userObject).length > 0) { newarray.push(userObject); }
空对象判断的补充说明
如果userObject可能存在继承的可枚举属性,可改用Object.entries(userObject).length > 0或Object.getOwnPropertyNames(userObject).length > 0来判断,避免误判。
内容的提问来源于stack exchange,提问作者sourabh k
相关产品推荐
相关产品推荐

