javascript - 在另一个对象中访问不同对象的属性
问题描述
我有一个虚拟 api 响应,其中包含一个包含对象的结果数组。当我尝试映射此数组并尝试访问我正在创建的另一个对象中的每个对象的属性时,它会引发错误。知道有什么问题吗?
这是一个代码片段
import { result } from "./partnership_rewards_response.json";
result.map((partner,index)=>{
const obj = {
partner.name,
partner.class
}
})
这就是我的 json 文件的样子
{
"result":[obj1, obj2, ...]
}
我得到的错误是Parsing error: Unexpected token, expected ","
编辑:我忘了指定,我正在尝试使用 useState 填充内容。所以对象结构已经初始化为默认值
EDIT2:这是我试图填充它的方式
const [showModal, setModal] = useState(false);
const [modalContent, setModalContent] = useState({
partner_name: "",
coupon_image:"",
coupon_code : "",
coupon_content:"",
terms:"",
redemption_steps:"",
});
setModalContent(
{
partner.partner_logo,
partner.coupon_image
}
)
解决方案
问题是您试图在对象字面量中使用速记属性表示法,但只有当属性值的来源是简单标识符(如example
.)而不是属性表达式(如person.name
. 当值的来源不仅仅是一个简单的标识符时,您必须使用“旧”(ES2015 之前)的完整属性语法 ( name: value
) 来代替。
您需要明确给出属性名称:
result.map((partner,index)=>{
const obj = {
name: partner.name,
class: partner.class,
};
// ...I assume there's more here...
})
或重新编辑(混淆您已更改属性名称):
setModalContent({
partner_logo: partner.partner_logo,
image: partner.image,
});
您也可以使用解构和属性简写符号来做到这一点:
result.map(({name, class},index)=>{
const obj = {
name,
class,
};
// ...I assume there's more here...
})
或者重新编辑,如果你已经解构person
,你可以这样做:
setModalContent({
partner_logo,
image,
});
推荐阅读
- json - U-SQL JsonTuple - 如何访问 JSON 数组中的特定字段
- sql - 带有替换变量的 PL-SQL 块
- javascript - 将文本插入 HTML通过 Javascript 事件的字段
- php - 如何从codeigniter中应用程序文件夹之外的另一个页面重定向到管理/登录页面
- reactjs - 带有嵌套对象的无限循环
- groovy - Spock 元编程 getProperty()
- javascript - Chrome DevTools 在元素面板中监听同一元素的多个选择
- docker - 跨 cpu 和 gpu 服务容器的不同 Ubuntu 版本
- python - Python打印用户定义的二维数组中的行
- java - NetBeans 条件断点不起作用