访问另一个对象中不同对象的属性



我有一个由结果数组组成的虚拟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填充react中的内容。对象结构已经初始化为默认值

编辑2:这是我如何尝试填充它

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)时才能这样做。当值的来源不仅仅是一个简单的标识符时,您必须使用"old"(pre-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,
});

快捷对象语法不能工作,因为键名中有点。

你可以把它改成:

import { result } from "./partnership_rewards_response.json";
result.map((partner,index)=>{
const obj = {
partnerName: partner.name,
partnerClass: partner.class
}
})

你的简写语法是错误的

result.map((partner,index) => {
const obj = {
name : partner.name,
class : partner.class
}
})

应该可以

最新更新