我的代码有一些问题。我已经在数组上循环了一段代码(像这样:)
我将数组变成这样:
这是一段代码:
processPostData(data: any) {
Array.prototype.forEach.call(data.resources, (element: any) => {
console.log(element);
Object.keys(element).forEach((key) => {
console.log(key);
if ((element[key] == null || element[key] == '') && ['process_limit_date', 'creation_date', 'closing_date', 'countAttachments', 'countNotes'].indexOf(key) === -1) {
element[key] = this.lang.undefined;
} else if (["senders","recipients"].indexOf(key) > 0) {
if (element[key].length > 1) {
console.log(element[key]);
element[key] = this.lang.isMulticontact;
} else {
element[key] = element[key][0];
}
} else if (key == 'status_icon' && element[key] == null) {
element[key] = 'fa-question undefined';
}
});
});
return data;
}
现在的问题是我修改了输入的“数据”,现在有了一个对象,例如: pic3
我现在有了一个Object而不是一个Array,我没有设法像以前那样遍历它。我该怎么办?至少在第一个循环中,获得具有对象的“ 23”和“ 24”索引的内容的数组或对象。
如果我不够清楚,请告诉我,我很难做到尽可能精确
答案 0 :(得分:0)
我不确定我是否正确理解您,但是您可以遍历这样的对象:
for(let key in object) {
let child = object[key];
// Your Code
}
答案 1 :(得分:0)
默认情况下,对象字段不能以数组方式迭代。但是,您可以尝试将处理程序包装起来以使其能够解析数组和对象形式:
if(Array.isArray(input)) {
/* Do what you are already doing */
} else { /* We are working with object */
Object.keys(input).forEach((key) => {
/* Here you can iterate over each key in object */
})
}
但是,您的问题范围仍然不清楚
答案 2 :(得分:0)
在遍历data.resources
之前
进行更改后,您必须遍历data.resources.docs
尝试类似的事情:
data.resources.forEach(resource => {
console.log(resource);
resource.docs.forEach(doc => {
console.log(doc);
// ...
}
});
答案 3 :(得分:0)
请注意,我注意到您将resource.senders
和resource.recipients
视为数组,而它是屏幕快照中的字符串。
我还注意到,如果您有多个发件人/收件人,则将this.lang.isMulticontact
分配给resource.senders / recipient,因此您将不再有发件人/收件人,这就是您想要的吗?
请注意,您不应修改数据参数,否则会导致不良的副作用。
processPostData(data) {
const dataToProcess = [...data];
dataToProcess.resources.forEach((resource) => {
const propertiesUndefined = ['process_limit_date', 'creation_date', 'closing_date', 'countAttachments', 'countNotes'];
propertiesUndefined.forEach((property) => {
if (!resource[property]) {
resource[property] = this.lang.undefined;
}
});
const propertiesMultiContact = ['senders', 'recipients'];
propertiesMultiContact.forEach((property) => {
if (resource[property] instance of Array && resource[property].length > 1) {
resource[property] = this.lang.isMulticontact;
}
});
if (!resource['status_icon']) {
resource['status_icon'] = 'fa-question undefined';
}
});
return dataToProcess;
}