英文:
How to get nested item in JSON response with JavaScript
问题
我有这个JSON响应:
{ id: 41071539879970, properties: { ... }, quantity: 1, variant_id: 41071539879970, key: '41071539879970:e0eefb458778bcb81e9efbf1fed9aa6b' }
final_price: 1100
selling_plan_allocation:
{
price: 1100
selling_plan:
{
fixed_selling_plan: false
id: 1079443490
name: "每4周交付"
}
}
这是我得到响应的方式:
const subscriptionProducts = cartResponse.items.filter(item => item.selling_plan_allocation)[0];
然而,我需要获取`item.selling_plan_allocation.selling_plan.name`的值
所以我尝试了:
const subscriptionProducts = cartResponse.items.filter(item => item.selling_plan_allocation.selling_plan.name)[0];
返回undefined。然后我尝试了:
const subscriptionProducts = cartResponse.items.filter(item => item.selling_plan_allocation)[0];
const subscriptionName = subscriptionProducts.selling_plan.name
但这又返回了一个错误:
> 未捕获的(在promise中)TypeError:无法读取未定义的属性
> (读取'name')
有人能告诉我我做错了什么吗?
不明白为什么这不起作用。
英文:
I've got this JSON response:
{id: 41071539879970,properties: {…},quantity: 1,variant_id: 41071539879970, key: '41071539879970:e0eefb458778bcb81e9efbf1fed9aa6b'}
final_price:1100
selling_plan_allocation:
{
price: 1100
selling_plan:
{
fixed_selling_plan:false
id:1079443490
name: "Delivery every 4 weeks”
}
}
And this is how I'm getting the response:
const subscriptionProducts = cartResponse.items.filter(item => item.selling_plan_allocation)[0];
However, I need to get the value of item.selling_plan_allocation.selling_plan.name
So I tried:
const subscriptionProducts = cartResponse.items.filter(item => item.selling_plan_allocation.selling_plan.name)[0];
which returned undefined. Then I tried:
const subscriptionProducts = cartResponse.items.filter(item => item.selling_plan_allocation)[0];
const subscriptionName = subscriptionProducts.selling_plan.name
Again this returned an error:
> Uncaught (in promise) TypeError: Cannot read properties of undefined
> (reading 'name')
Can somebody tell me what I'm doing wrong?
Don't understand why this isn't working.
答案1
得分: 1
为了安全地访问嵌套属性,您需要确保沿路径的所有中间属性都有效且不为undefined。以下是在嵌套结构中访问name属性的正确方式:
const subscriptionProducts = cartResponse.items.find(item => item.selling_plan_allocation);
if (subscriptionProducts) {
const subscriptionName = subscriptionProducts.selling_plan_allocation.selling_plan.name;
console.log(subscriptionName);
} else {
console.log("未找到订阅产品");
}
在这段代码中,使用find函数来定位第一个具有selling_plan_allocation的项目。如果找到这样的项目,您可以安全地访问嵌套属性,包括selling_plan.name。
英文:
To access the nested property safely, you need to ensure that all intermediate properties along the path are valid and not undefined. Here's the correct way to access the name property within the nested structure:
const subscriptionProducts = cartResponse.items.find(item => item.selling_plan_allocation);
if (subscriptionProducts) {
const subscriptionName = subscriptionProducts.selling_plan_allocation.selling_plan.name;
console.log(subscriptionName);
} else {
console.log("No subscription products found");
}
In this code, the find function is used to locate the first item that has selling_plan_allocation. If such an item is found, you can safely access the nested properties, including selling_plan.name.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论