Javascript 遍历Typescript中的每个对象

Javascript 遍历Typescript中的每个对象,javascript,arrays,typescript,object,foreach,Javascript,Arrays,Typescript,Object,Foreach,我有一个目标: product: { id: "id1", title: "ProductName 1", additionalDetails: { o1: { id: "pp1", label: "Text", content: [{ id: "ppp1", label: "Tetetet" }] }, o2: { id: "

我有一个目标:

product: {
    id: "id1",
    title: "ProductName 1",
    additionalDetails: {
        o1: {
            id: "pp1", 
            label: "Text",
            content: [{ id: "ppp1", label: "Tetetet" }]
        },
        o2: {
            id: "pp2", 
            label: "Text2", 
            content: [{ id: "ppp2", label: "Tetetet2" }]
        } 
    }
}
我尝试迭代到每个object.additionalDetails.object,但我不能。我的代码:

Object.key(product.additionalDetails).forEach((key:string)=>{
const additionalDetail=产品[密钥];
const idLabel:string=additionalDetail.id;
常量标签:string=additionalDetail.label;
const contentId:string=additionalDetail.content[0].id;
const content=additionalDetail.content[1]。标签;
});

但它不起作用。我缺少什么?

您正在尝试获取数组的id索引

o1:{id:“pp1”,标签:“文本”,内容:[{id:“ppp1”,标签:“teteteet”},

const contentId: string = additionalDetail.content.id;
您需要选择数组的索引以访问包含内容id的对象:

const contentId: string = additionalDetail.content[0].id;

您还应该使用const初始化additionalDetails。

通过使用
Object.key
Object.values
Object.entries
中的任何一个来迭代additionalDetails的属性

const乘积={
id:“id1”,
标题:“产品名称1”,
其他详细信息:{
o1:{
id:“pp1”,
标签:“文本”,
内容:[{
id:“ppp1”,
标签:“Tettet”
}]
},
氧气:{
id:“pp2”,
标签:“Text2”,
内容:[{
id:“ppp2”,
标签:“Tettet2”
}]
}
}
}
for(对象条目的常数[k,v](产品附加详细信息)){
log(`Detail${k}有标签${v.label}`);
}
两个错误:

产品[key]
替换为
产品。其他详细信息[key]


additionalDetail.content[1]
不存在(
content
是一个内部只有一个元素的数组)

产品={
id:“id1”,
标题:“产品名称1”,
其他详细信息:{
o1:{
id:“pp1”,
标签:“文本”,
内容:[{
id:“ppp1”,
标签:“Tettet”
}]
},
氧气:{
id:“pp2”,
标签:“Text2”,
内容:[{
id:“ppp2”,
标签:“Tettet2”
}]
}
}
}
Object.key(product.additionalDetails).forEach(key=>{

const additionalDetail=product.additionalDetails[key];//
additionalDetail.content
是一个数组,您试图访问它的
id
属性(
additionalDetail.content.id
),因为它似乎总是只有一个元素,所以可以使用
additionalDetail.content[0].id
看起来语法不正确。是否缺少
{}
o1
o2
包装到
产品中?您好,凯瑟琳:您的第一个代码段在语法上不是有效的TypeScript。您确定复制正确吗?其次:“它不工作”通常对那些试图帮助您的人没有多大帮助。请准确描述发生的情况,包括完整的错误消息等。这是因为您需要使用
product。其他详细信息[key]
而不仅仅是
product[key]
。我更改了它,但它不起作用。你是对的,但smt else也是一个问题。我更新了我的帖子。你需要使用0作为索引,因为数组中只有一项。它从0开始。我应该写:const contentId=additionalDetail.content[0].id;和const content=(additionalDetail.content)?additionalDetail.content[0].label:未定义;对吗?是,或
const content=additionalDetail.content[1]&&additionalDetail.content[1]。label
,它将检查是否存在
additionalDetail.content[1]
,如果存在,则使用
。label