在事先不知道键值对的情况下迭代 v-for 中的数组

Posted

技术标签:

【中文标题】在事先不知道键值对的情况下迭代 v-for 中的数组【英文标题】:Iterate over array in v-for without knowing key-value pair beforehand 【发布时间】:2020-07-31 15:23:18 【问题描述】:

我有一个这样的对象数组:

[  Articulo: "Producto 1", Precio: "2.95" ,  Articulo: "Producto 2", Precio: "2.95"   ]

我想使用 v-for 循环遍历对象,以便显示带有如下文本的 div:

Articulo -> Producto 1

Articulo -> Producto 2

但是,由于数组是从函数自动生成的,我事先不知道键/值对,所以我不知道如何在模板中显示该信息。

知道我该如何处理吗?

【问题讨论】:

【参考方案1】:

如果你只想要第一个属性,你可以这样做:

new Vue(
  el: "#app",
  data() 
    return 
      arr: [
         Articulo: "Producto 1", Precio: "2.95" ,
         Articulo: "Producto 2", Precio: "2.95" 
      ]
    
  
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div v-for="obj in arr">
     Object.keys(obj)[0]  ->  Object.values(obj)[0] 
  </div>
</div>

(过去无法保证 javascript 中的属性顺序以确保您获得 Articulo 而不是 Precio,但现在可以肯定这不是问题,尤其是使用 Vue CLI。)

如果你想要所有属性,你可以遍历对象键/值对:

new Vue(
  el: "#app",
  data() 
    return 
      arr: [
         Articulo: "Producto 1", Precio: "2.95" ,
         Articulo: "Producto 2", Precio: "2.95" 
      ]
    
  
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div v-for="obj in arr">
    <div v-for="(value, key) in obj">
       key  ->  value 
    </div>
  </div>
</div>

【讨论】:

以上是关于在事先不知道键值对的情况下迭代 v-for 中的数组的主要内容,如果未能解决你的问题,请参考以下文章

java问题,我想在java中存储键值对,以便使用,但是键值对的键和值都有重复元素,使用hashmap会产生覆盖。

JAVA Map类代码解析,Map中键值对的两种取出方式

调试 C# 时为啥不能更改字典键值对的计数?

字典,字典永远以键值对的方式出现,不会出现没有键或者没有值得情况

将控件绑定到键值对的动态集合

将 1 行表展平为键值对表