在对象数组上使用扩展运算符来访问元素[重复]
Posted
技术标签:
【中文标题】在对象数组上使用扩展运算符来访问元素[重复]【英文标题】:Using spread operator on array of object to access elements [duplicate] 【发布时间】:2021-08-08 10:33:18 【问题描述】:如何使用扩展运算符访问我的对象数组中的元素?
const array = [ obj: 1, obj: 2]
console.log([...array].obj)
// Output undefined
console.log([...array.obj])
// Output Uncaught TypeError
我看过这篇帖子Use spread operator on objects array? 非常相似,但他们不尝试访问元素。
那么可以在对象数组上使用扩展运算符来访问元素吗?如果有怎么办?
【问题讨论】:
您期望输出什么?1
和 2
?
是的,没错
[...array]
-> 将array
克隆到一个新数组中。您获取该数组的 .obj
属性。数组没有 .obj
属性,所以你得到未定义的。 [...array.obj]
-> 将 array.obj
作为数组传播。由于数组没有.obj
属性,因此您正在执行undefined
的数组传播。这会导致错误。
长话短说,你不能像在 JS 中那样使用扩展运算符。
【参考方案1】:
您可能正在寻找map
你需要的是array.map(element => element.obj)
您的尝试有以下问题:
console.log([...array].obj)
:您正在将array
传播到一个新数组中,然后您正在记录新数组的obj
属性,即undefined
,正如预期的那样
console.log([...array.obj])
:你试图传播array
的obj
属性,这也是undefined
,这意味着你试图传播undefined
,这会引发错误
【讨论】:
不抱歉,我的问题是它到底是什么。我知道如何使用诸如 map、forEach、for 之类的函数来浏览对象……但这不是我的问题。不过谢谢 再次感谢您的编辑和帮助。所以没有办法使用传播语法来访问我的元素?我必须使用一个函数? @user15873596 传播根本不像映射。所以......不,你不能让它像映射一样工作。 谢谢@VLAZ,这正是我想要的:) @user15873596 扩展运算符就像它所说的那样,它用于将数组扩展为新数组,或将对象键值对扩展为新对象。您不能使用此运算符修改内容【参考方案2】:简短回答,否。
我们不能在对象数组上使用扩展运算符来访问元素。
正如@VLAZ 在评论中所说的
传播根本不像映射。所以......不,你不能做 它像地图一样工作
【讨论】:
以上是关于在对象数组上使用扩展运算符来访问元素[重复]的主要内容,如果未能解决你的问题,请参考以下文章