Вы можете использовать функции более высокого порядка, такие как map
filter
reduce
и т. Д.
чтобы избежать петель.
вот 1 вкладыш:
var obj = [
{
"Id": "9ac44c1d-0066-47aa-a2a2-a9b90109b0a5",
"Group": null,
"DataFields": [
{
"Header": "ProjectID",
"Value": "TestProject"
},
{
"Header": "uui_ConfigPack",
"Value": "75e8ce5a-7ae0-41ca-86f0-aca1e7158073"
}
],
"HasDocuments": null
}
]
console.log(obj.map(i => i.DataFields).flat(1).find(i => i.Header === 'ProjectID').Value);
Как заявлено CertainPerformance и влаз. Это приведет к снижению производительности из-за нескольких итераций.
Но если вам нравится декларативный стиль кодирования, вы можете использовать RxJS
в котором вы можете сделать что-то вроде:
var obs$ = from(obj);
obs$.pipe(
flatMap(i => i.DataFields),
filter(i => i.Header === 'ProjectID' )),
pluck('Value')
).subscribe(console.log);
, который в основном делает то же самое, но более производительным образом.