Javascript 如何使用forEach遍历序列中的数组
我正在使用xdmp.eval函数搜索并返回最终数据库中的文档,以便在协调过程中使用Javascript 如何使用forEach遍历序列中的数组,javascript,arrays,sequence,marklogic,marklogic-9,Javascript,Arrays,Sequence,Marklogic,Marklogic 9,我正在使用xdmp.eval函数搜索并返回最终数据库中的文档,以便在协调过程中使用 let finalDoc = xdmp.eval( "fn.head(cts.search(cts.jsonPropertyValueQuery('Id',id, ['exact']),['unfiltered','score-zero']))", {'id':id}, {"database" : xdmp.database("data-hub-FINAL")}); 文档按以下结构的顺序返
let finalDoc = xdmp.eval(
"fn.head(cts.search(cts.jsonPropertyValueQuery('Id',id,
['exact']),['unfiltered','score-zero']))",
{'id':id},
{"database" : xdmp.database("data-hub-FINAL")});
文档按以下结构的顺序返回:
{"SourceSystemName":"",
"BatchDtTm":"06/20/2018 15:05:15",
"SubjectArea":"Customer",
"DocumentType":"Registration",
"Id":"100",
"Contact":[
{"CustomerId":"1",
"FirstName":"",
"LastName":"",
"EmailId":""
},
{"CustomerId":"2",
"FirstName":"",
"LastName":"",
"EmailId":""
}
]
}
我需要使用finalDoc.Contact.forEach()遍历Contact数组中的每个客户。但是,当我使用fn.head(finalDoc.toArray())或fn.head(finalDoc.toObject())将finalDoc序列更改为数组时,我的forEach函数失败,错误为“无法读取未定义的属性‘forEach’”。当我只是尝试通过执行finalDoc.contact(或finalDoc[0].contact)输出联系人数组时,我会得到一个“Null”输出
如何从序列中获取联系人数组并使用forEach对其进行迭代?谢谢
var myobj={“SourceSystemName”:“,
“BatchDtTm”:“2018年6月20日15:05:15”,
“主题区域”:“客户”,
“文档类型”:“注册”,
“Id”:“100”,
“联系人”:[
{“CustomerId”:“1”,
“名”:“名”,
“姓氏”:“,
“电子邮件ID”:”
},
{“CustomerId”:“2”,
“名”:“名”,
“姓氏”:“,
“电子邮件ID”:”
}
]
}
myobj[“联系人”].forEach(功能(项目){
控制台日志(项目);
})
您的单品是对的,只是顺序不对fn.head
不接受数组,因此它在fn.head(finalDoc.toArray())
中没有任何效果:您仍然拥有一个数组。您可以将序列转换为数组,然后使用数组索引:
finalDoc.toArray()[0].Contact.forEach(...)
或者您可以在最初的评估序列上使用fn.head
fn.head(finalDoc).Contact.forEach(...)
finalDoc=JSON.parse(JSON.stringify(finalDoc))代码>试试这个。分配它有什么问题var arr=yourObj.Contact
非常感谢您,我使用了您的第一个建议,效果非常好!