JavaScript中展开对象时如何排除指定属性
正确实现展开对象并排除指定属性的方法
你原来的代码报错是因为在对象字面量里直接写data.token是无效语法,对象里必须是键值对或者展开运算符的合法用法。下面是两种靠谱的实现方式:
方法一:解构赋值(推荐)
通过对象解构直接排除不需要的属性,剩下的自动打包成新对象:
const { token, ...userData } = data;
这样userData就会包含name、lastName、age三个属性,完全排除了token,而且不会修改原data对象。
方法二:展开后删除属性
先展开整个对象,再删除不需要的属性:
const userData = { ...data }; delete userData.token;
这种方式也能得到目标对象,但相比解构多了一步删除操作,逻辑上不如前者直接。
为什么你原来的代码不对?
你写的{ data.token, ...data }不符合对象字面量语法,正确的键值对写法应该是token: data.token,但就算这么写,展开data后又会把token重新加回来,根本达不到排除的目的,反而会保留token(对象重复键会取最后一个),完全不符合需求。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

