在映射时,如何访问循环内的对象键?角



我有一个数组,其中包含所有应该发送的键,问题来了,当我试图调用它们在for循环中,是在一个映射,我得到一个错误:

无法读取未定义属性'0'

如果我打印数组键,它们将打印得很好,但我不能在嵌套的JSON数组中指向它们。让我展示一下我的意思

这是我的数组,包含了所有的键

reportFieldsArr = [
0: "PrefixTitle"
1: "Company"
2: "Address"
3: "Zip"
]

我将把该数组传递给一个函数,该函数将尝试访问map

中的每个键当我尝试这样做的时候,我收到了错误,因为不能访问.reportFieldsArr[index]:

leads.find(s => s.personId=== id).reportFieldsArr[index]

这是all函数

filterLeads(leads,reportFieldsArr){ 
this.leads = Array.from(new Set(leads.map(s => s.personId)))
.map(id => {
let leadFields:any = []
for(let index = 0; index < reportFieldsArr.length; index++){
leadFields[index] = leads.find(s => s.personId=== id).reportFieldsArr[index]
}

return leadFields
});
}

这就是现在的工作方式,但它是静态数据,我需要动态:

filterLeads(leads,reportFieldsJSON,reportFieldsArr) { 
this.leads = Array.from(new Set(leads.map(s => s.personId)))
.map(id => {
let leadFields:any =  {
"PrefixTitle": leads.find(s => s.personId=== id).PrefixTitle,
"Company": leads.find(s => s.personId=== id).Company,
"Address": leads.find(s => s.personId=== id).Address,
"Zip": leads.find(s => s.personId=== id).Zip,
};

return leadFields
});
}

如果是reportFieldsArr = ["PrefixTitle", "Company", "Address", "Zip"],那么你可能想要做

leadFields[index] = leads.find(s => s.personId=== id)[reportFieldsArr[index]];

(正如@ abhilashagustine在他的评论中指出的,你的reportFieldsArr在语法上是不正确的)。

同样,您不必在每次循环迭代时都重复leads.find()。像这样做:

filterLeads(leads,reportFieldsArr){ 
this.leads = Array.from(new Set(leads.map(s => s.personId)))
.map(id => {
let leadFields:any = []
const lead = leads.find(s => s.personId=== id);
for(let index = 0; index < reportFieldsArr.length; index++){
leadFields[index] = lead[reportFieldsArr[index]];
}

return leadFields;
});
}

最新更新