Я пишу небольшой сайт на платформе Astro. У меня есть список «Точек приема документов». Раньше я просто сохранял их в переменной offices = [ {} , {} , {} ]. Я вывожу их во внешний интерфейс следующим образом:
// Here the offices is an Array
<select size='2'>)
{ offices.map( (i) => <option value = {i.id}> {i.name} </option> ) }
</select>
Теперь я пытаюсь сделать то же самое через Map().foreach(), но ничего не получается:
// Offices.ts
const offices: Map<string, office> = new Map()
const volskaya: office = {
id: 'volskaya',
name: 'name',
address: 'address',
phone: '+x (xxx) xxx-xx-xx',
phoneUrl: 'tel:+xxxxxxxxxxx',
working: ''
}
const rabochaya: office = {
id: 'rabochaya',
name: 'name',
address: 'address',
phone: '+x (xxx) xxx-xx-xx',
phoneUrl: 'tel:+xxxxxxxxxxx',
working: ''
}
offices.set('volskaya', volskaya)
offices.set('rabochaya', rabochaya)
export {offices}
// Component.astro
---
import { offices } from "./offices";
---
<select>)
{ offices.forEach( (i) => <option value = {i.id}> {i.name} </option> ) } // not working
</select>
В то же время, если я вывожу данные в console.info(), все отображается так, как должно:
offices.forEach((i)=> console.info(i.id,i.name)) // working
Я не могу этого понять. Либо существует какое-то ограничение на использование Map(), либо я неправильно использую Map().



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


То, что отображается в HTML, является результатом offices.map и offices.forEach соответственно.
Array.prototype.map возвращает массив значений (т. е. каждое значение является результатом одного выполнения обратного вызова). В вашем случае массив элементов HTML (или, по крайней мере, что-то подобное, я не знаком с Astro)
Map.prototype.forEach также выполняет обратный вызов для каждого элемента на карте, но возвращает undefined ... Таким образом, рендерить нечего...
.forEach()просто ничего не возвращает.Map, похоже, не имеет прямой версии.map(), какArray, но связанный дубликат предоставляет варианты (включая простое созданиеArrayизMapи вызов.map()на нем).