如何在嵌套数组(数组中的数组)上使用 v-for 指令进行迭代

Posted

技术标签:

【中文标题】如何在嵌套数组(数组中的数组)上使用 v-for 指令进行迭代【英文标题】:How to make iterations using v-for directive on nested array (array in array) 【发布时间】:2019-12-17 03:17:09 【问题描述】:

我是 Vue 的新手,遇到了一个情况,我想就一些建议提供一些建议。

在我的 js 文件中,我有一些数组,其中包含一些我想在表中插入的数据:

const d1=[col1:"aaa1",col2:"bbb1",col3:"ccc1",col4:"ddd1",col5:"eee1",
          col1:"aaa2",col2:"bbb2",col3:"ccc2",col4:"ddd2",col5:"eee2"]
const d2=[col1:"fff1",col2:"ggg1",col3:"hhh1",col4:"iii1",col5:"jjj1",
          col1:"aaa2",col2:"bbb2",col3:"ccc2",col4:"ddd2",col5:"eee2"]

然后我将这两个数组保存在另一个名为 availableData 的变量中

const availableData=[d1,d2];

我的vue实例如下:

new Vue(
  el: '#c1',
  data: 
    availableData,
  
);

在我的 html 中,我试图在我的行 div 中添加一个 for 循环(v-for),以便该行可以显示我的 availableData 变量中的每个数据,但是我在尝试将 d1 传递到第一行时遇到了一些问题和 d2 到第二个,

<div id="c1" class="columns">

// ...some code

    <div class="row" v-for="data in availableData">
        <div class="cell">
            data.col1
        </div>
        <div class="cell">
            data.col2
        </div>
        <div class="cell">
            data.col3
        </div>
        <div class="cell">
            data.col4
        </div>
        <div class="cell">
            data.col5
        </div>
    </div>
</div>

当然,v-for 语句是不正确的,因为我试图遍历 availableData 数组,如果我要写的话

v-for="data in availableData[i]"

那么有没有办法通过像 i 这样的变量来实现迭代,或者这种方法不是一种可行的方式来进行?

【问题讨论】:

availableData 尝试 [...d1, ...d2];你的 availableData 现在包含两个对象数组而不是四个对象 【参考方案1】:

您有多种解决方案来做您想做的事。

解决方案 #1:

您可以更改 availableData 以显示您想要的所有数据。你只需要像这样平放你的数组:const availableData=[...d1, ...d2];

使用这样的代码,您的 availableData 变量将具有:

const availableData = [col1:"aaa1",col2:"bbb1",col3:"ccc1",col4:"ddd1",col5:"eee1",
          col1:"aaa2",col2:"bbb2",col3:"ccc2",col4:"ddd2",col5:"eee2",
          col1:"fff1",col2:"ggg1",col3:"hhh1",col4:"iii1",col5:"jjj1",
          col1:"aaa2",col2:"bbb2",col3:"ccc2",col4:"ddd2",col5:"eee2"]

解决方案 #2

您可以在模板中进行两次迭代:

<div class="data" v-for="data in availableData">
    <div class="row" v-for="row in data">
        <div class="cell">
            row.col1
        </div>
        <div class="cell">
            row.col2
        </div>
        <div class="cell">
            row.col3
        </div>
        <div class="cell">
            row.col4
        </div>
        <div class="cell">
            row.col5
        </div>
    </div>
 </div>

【讨论】:

我在使用解决方案 2 时遇到了问题,row.col1 ,row.col2....在它们各自的 div 中没有显示 嗨,谢谢你的建议,我完全不使用索引来完成第二个解决方案,我在外面写的 div 和我写的第二层 ,然后我可以制作 row.col1 , row.col1 ... 显示,您想确认或提供有关为什么添加索引不起作用的信息吗?谢谢! 你是对的!我会纠正的。你不需要使用 index !干得好!

以上是关于如何在嵌套数组(数组中的数组)上使用 v-for 指令进行迭代的主要内容,如果未能解决你的问题,请参考以下文章

Vue 无法更改嵌套 v-for 中的属性

使用vue中的v-for在模板中遍历数组中的数组

Vue 使用 v-for 迭代 API 响应的嵌套数组

Vue.js 从数组中弹出一个嵌套对象

来自对象键和嵌套数组的 Vue.js v-for 循环

Vue V-for嵌套循环数组