vue.js 如何访问没有变量的嵌套数组中的所有数据?

lx0bsm1f  于 2023-03-03  发布在  Vue.js
关注(0)|答案(4)|浏览(145)

从嵌套数组中获取数据通常很容易。如果我的数组如下所示:

myArray: [
      {
        myNestedArray: [
          {
            name: 'Some name'
          },
          {
            name: 'Some other name'
          }
        ]
      }
    ]

我可以通过执行以下操作来访问嵌套值:

<div v-for="name in myArray">
  {{ name.myNestedArray[0].name }}
</div>

但是如果我有一个没有定义任何变量的嵌套数组呢?
示例:

myArray: [
      {
        myNestedArray: [
          'Rob',
          'John',
          'Jacob'
        ]
      }
    ]

如果我这样做:

name.myNestedArray[0]

它将只返回数组中的第一个名称:罗伯
如果我这样做:

name.myNestedArray

它将输出方括号中的所有名称,如果嵌套数组中有一个项为空,它将输出空的方括号。
此类输出的示例:

[]
[ "Rob", "John", "Jacob" ]
[]
[]
[]
[]
[]
[]
[]
[]
[ "Tom" ]
[ "Liz" ]
[ "Martin, James" ]
[]
[]
[]
[]
[]

我想要的是这样的输出:

Rob 
John
Jacob
Tom
Liz
Martin
James
bogh5gae

bogh5gae1#

像这样东西

<div v-for="name in myArray">
 <div v-for="(i,index) in name.myNestedArray.length()" :key="index">
   {{name.myNestedArray[index]}}
 </div>
</div>
jjjwad0x

jjjwad0x2#

可以为一个循环创建计算属性并填充数组:

new Vue({
  el: "#app",
  data() {
    return {
      myArray: [
      {myNestedArray: [
          'Rob',
          'John',
          'Jacob'
        ]},
      {myNestedArray: []},
      {myNestedArray: [
          'Tom',
          'Liz',
          'Martin'
        ]}
      ]
    }
  },
  computed: {
    flatArray() {
      return this.myArray.map(m => m.myNestedArray).flat()
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div v-for="nestedData in flatArray">
    {{ nestedData }}
  </div>
</div>
gstyhher

gstyhher3#

首先你必须理解两者的区别,我们总是使用index来访问数组元素,而对象属性值是key的.
根据需要,可以通过两种方式打印模板中的嵌套数组元素。
1.通过使用换行符<br>连接数组元素,然后在v-html属性中使用它。但是在使用它时,请确保您没有任何恶意或敏感数据,因为它可能会暴露给XSS安全漏洞。
现场演示**:**

new Vue({
  el: '#app',
  data: {
    myArray: [
      {
        myNestedArray: [
          'Rob',
          'John',
          'Jacob'
        ]
      }
    ]
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div v-for="(name, index) in myArray" :key="index">
    <p v-html="name.myNestedArray.join('<br>')"></p>
  </div>
</div>

1.通过使用v-for属性迭代循环两次。
现场演示**:**
一个二个一个一个

n7taea2i

n7taea2i4#

试试这个-

  1. myArray上的外循环。
  2. myNestedArray上的内部循环
    这是一个工作演示-
new Vue({
  el: "#app",
  data() {
    return {
      myArray: [
      {
        myNestedArray: [
          'Rob',
          'John',
          'Jacob'
        ]
      },
      {
        myNestedArray: []
      },
      {
        myNestedArray: [
          'Tom',
          'Liz',
          'Martin'
        ]
      }
    ]
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div v-for="name in myArray">
    <div v-for="nestedData in name.myNestedArray">
      {{ nestedData }}
    </div>
  </div>
</div>

相关问题