Javascript 如何使用forEach遍历序列中的数组

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")}); 文档按以下结构的顺序返

我正在使用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")});
文档按以下结构的顺序返回:

{"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
非常感谢您,我使用了您的第一个建议,效果非常好!