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