Вакансия на HH
Репозиторий тестового
Первый фрагмент кода выбросит ошибку, так как стрелочная функция используется до своего объявления.
Во втором фрагменте кода используется синтаксис function declaration.
Function declaration имеет механизм "поднятия" (hoisting). Это означает, что функция "поднимается" в области видимости и доступна для вызова до своего объявления.
Решение в песочнице Vue 3 composition api
<script>
export default {
data() {
return {
count: 20
}
}
}
</script>
<template>
<template v-for="i in count" :key="i">
<div v-if="i < 10">{{ i }}</div>
</template>
</template>
const resources = [
{
id: 1,
count: 13
},
{
id: 2,
count: 5
},
{
id: 3,
count: 24
},
{
id: 4,
count: 101
},
{
id: 5,
count: 72
},
{
id: 6,
count: 64
},
{
id: 7,
count: 305
},
{
id: 8,
count: 67
},
{
id: 9,
count: 95
},
{
id: 10,
count: 21
},
{
id: 11,
count: 37
}
]
/** @param {{id: number, count: number}[]} resources */
function parseResources(resources) {
if (!resources.length) return
const result = {}
for (const { id, count } of resources) {
result[id] = count
}
return result
}
console.dir(parseResources(resources))