The v-for directive in Vue lets you repeat elements for each item in a list. Using an index helps you know the position of each item while looping.
v-for with index in Vue
Introduction
Syntax
Vue
<template> <div v-for="(item, index) in items" :key="index"> {{ index }} - {{ item }} </div> </template>
The v-for directive takes two arguments inside parentheses: the item and its index.
Always use :key with a unique value like the index to help Vue track elements efficiently.
Examples
fruits array and shows each fruit with its index.Vue
<div v-for="(fruit, i) in fruits" :key="i"> {{ i }}: {{ fruit }} </div>
users array, shows user names with 1-based numbering, and uses user ID as key.Vue
<li v-for="(user, idx) in users" :key="user.id"> {{ idx + 1 }}. {{ user.name }} </li>
Sample Program
This example shows a list of colors with their indexes starting from 0.
Vue
<template>
<ul>
<li v-for="(color, index) in colors" :key="index">
{{ index }} - {{ color }}
</li>
</ul>
</template>
<script setup>
import { ref } from 'vue'
const colors = ref(['Red', 'Green', 'Blue'])
</script>Important Notes
Index starts at 0 by default.
Using the index as a key is okay for static lists but not recommended if the list changes order.
For dynamic lists, use a unique ID from the item as the key instead of the index.
Summary
v-for repeats elements for each item in a list.
You can get the index of each item by adding it in parentheses.
Use :key with a unique value to help Vue update the list efficiently.
Practice
1. What does the
v-for directive do in Vue when used with a list?easy
Solution
Step 1: Understand the purpose of
Thev-forv-fordirective is designed to repeat an element for each item in a list or array.Step 2: Compare options with this behavior
Only Repeats an element for each item in the list describes repeating elements for each list item, which matchesv-forusage.Final Answer:
Repeats an element for each item in the list -> Option DQuick Check:
v-forrepeats elements [OK]
Hint: Remember: v-for loops over lists to repeat elements [OK]
Common Mistakes:
- Thinking v-for deletes or sorts items
- Confusing v-for with conditional rendering
- Assuming v-for creates only one element
2. Which of the following is the correct syntax to use
v-for with an index in Vue?easy
Solution
Step 1: Recall correct
The correct syntax isv-forsyntax with indexv-for="(item, index) in items", where the item and index are inside parentheses.Step 2: Check each option
Onlyv-for="(item, index) in items"uses parentheses correctly and the right order: item then index.Final Answer:
v-for="(item, index) in items" -> Option AQuick Check:
Parentheses around item and index =v-for="(item, index) in items"[OK]
Hint: Use parentheses around item and index in v-for [OK]
Common Mistakes:
- Omitting parentheses around item and index
- Placing index after the list instead of inside parentheses
- Using commas outside parentheses
3. Given the Vue template snippet:
What will be the rendered list items?
<ul>
<li v-for="(fruit, i) in ['apple', 'banana', 'cherry']" :key="i">{{ i }} - {{ fruit }}</li>
</ul>What will be the rendered list items?
medium
Solution
Step 1: Understand the loop and index
The loop goes over the array ['apple', 'banana', 'cherry'] with index i starting at 0.Step 2: Check the output format
Each list item shows "{{ i }} - {{ fruit }}", so index then fruit name separated by a dash.Final Answer:
0 - apple
1 - banana
2 - cherry -> Option BQuick Check:
Index starts at 0, format is 'index - fruit' [OK]
Hint: Index in v-for starts at 0 by default [OK]
Common Mistakes:
- Assuming index starts at 1
- Swapping index and item in output
- Ignoring the :key binding
4. Identify the error in this Vue snippet:
<div v-for="item, index in items" :key="index">
{{ index }}: {{ item }}
</div>medium
Solution
Step 1: Check v-for syntax
The syntax for v-for with index requires parentheses:v-for="(item, index) in items".Step 2: Analyze the given code
The code usesv-for="item, index in items"without parentheses, which is invalid.Final Answer:
Missing parentheses around item and index -> Option AQuick Check:
Parentheses required for multiple variables in v-for [OK]
Hint: Always wrap item and index in parentheses in v-for [OK]
Common Mistakes:
- Omitting parentheses causes syntax error
- Misplacing :key attribute
- Thinking v-for can't be on div
5. You have a list of users with IDs and names:
Which Vue template correctly uses
users = [
{ id: 101, name: 'Alice' },
{ id: 102, name: 'Bob' },
{ id: 103, name: 'Carol' }
]Which Vue template correctly uses
v-for with index and sets a unique :key for each user?hard
Solution
Step 1: Identify correct v-for syntax with index
Options A, B, and D use(user, index)syntax correctly; C does not use index.Step 2: Check for unique :key usage
Keys should be unique and stable. Usinguser.idis best.<div v-for="(user, index) in users" :key="user.id">{{ index }} - {{ user.name }}</div>uses:key="user.id"with index, which is correct.Step 3: Verify output format
<div v-for="(user, index) in users" :key="user.id">{{ index }} - {{ user.name }}</div>shows index and user name, which matches the question requirement.Final Answer:
<div v-for="(user, index) in users" :key="user.id">{{ index }} - {{ user.name }}</div> -> Option CQuick Check:
Use (item, index) with unique :key from item [OK]
Hint: Use item ID for :key, index for display only [OK]
Common Mistakes:
- Using index as :key causing update issues
- Not using parentheses for item and index
- Ignoring unique keys requirement
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
