Skip to content
Advertisement

Iterate over multiple lists simultaneously using vue.js

Is it possible to iterate over multiple lists simultaneously using JavaScript? The reason why I am focusing on vue.js is because, if this is possible, I would use it inside HTML tag.

listA = ('itemA1', 'itemA2');
listB = ('itemB1', 'itemB2');

<div v-for="A in listA" v-for="B in listB">
   <span>A value is: @{{A}}</span>
   <span>B value is: @{{B}}</span>
</div>

EDIT:

A brief explanation how I am going to use it. This question is actually related to one that I have already asked before. As I am going to have table with two columns, where first one is going to contain headers of the table, and second one the data, I need somehow to make them be in same row. Now if you check the question I have linked up there you should find how those tables are supposed to look like. But I’ve got a problem when I have data divided in more rows in some of those td tags. For example:

+---------+-------------+
| Name    | Christopher |
| Middle    Christy     |
| Surname | Ashton      |
|         | Kutcher     |
| ------- | ----------- |

And I need to display it as:

+---------+-------------+
| Name    | Christopher |
|           Christy     |
| Middle  | Ashton      |
| Surname | Kutcher     |
| ------- | ----------- |

Advertisement

Answer

You could use computed properties for this.

E.g.

listA = ['itemA1', 'itemA2'];
listB = ['itemB1', 'itemB2'];

// add a computed property that merges the 2 arrays into a single array of objects
{
  computed: {
    list() {
      return listA.map((itm, i) => {
        return { A: itm, B: listB[i] }
      })
    }
  }
}

<div v-for="obj in list">
   <span>A value is: @{{obj.A}}</span>
   <span>B value is: @{{obj.B}}</span>
</div>

Please note that this is untested code, and unsafe, you should check if the listB has that index, e.g. if listA contains 5 items and listB 4, it would give an error.

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement