如何将Object对象属性值转换为数组并添加新元素
实现对象字符串属性转数组并追加新值的方案
原代码存在的问题
- 遍历
namesFromApi时直接对object.names重复赋值,会覆盖之前的操作结果,最终仅能保留原字符串和数组最后一个元素 - 代码中直接引用
names变量没有绑定到对象属性,运行时会抛出未定义异常
正确实现
你可以直接利用数组展开语法一步完成「字符串转数组+保留原属性值+合并新值」的需求:
const object = { names: "John" } const namesFromApi = ['Ken', 'Ben', 'Joana', 'Fillip'] // 转换后object.names为 ["John", "Ken", "Ben", "Joana", "Fillip"] object.names = [object.names, ...namesFromApi]
如果需要对合并后的结果去重,可以搭配Set实现:
object.names = [...new Set([object.names, ...namesFromApi])]
如果后续需要持续往该属性中追加新元素,可以先做类型判断再操作:
// 仅当属性值为字符串时才做转数组处理,避免重复转换 if (typeof object.names === 'string') { object.names = [object.names] } // 追加单个元素 object.names.push('Mike') // 追加多个元素 object.names.push(...['Lisa', 'Bob'])
内容的提问来源于stack exchange,提问作者Vadszh Makedonski
相关产品推荐
相关产品推荐

