当前位置: 首页 > 知识库问答 >
问题:

javascript - js处理数组数据竖向显示?

曾洲
2024-08-21
let arr = [
  [{price: 26, item_name: '测试1'},{price: 269, item_name: '测试1'},{price: 546, item_name: '测试1'}]
  [{price: 75, item_name: '测试2'},{price: 360, item_name: '测试2'},{price: 648, item_name: '测试2'},{price: 914, item_name: '测试2'}]
  [{price: 142, item_name: '测试3'},{price: 456, item_name: '测试3'},{price: 685, item_name: '测试3'}]
]

在vue3中循环这个arr数组,怎么让数据竖向显示,如下图

<div v-for="i in arr" :key="i">
  <div v-for="(j, index) in i">{{j.name}}</div>
</div>

这样双循环没有达到效果,
请问循环前是不是要处理一下arr这个数据

共有2个答案

田冥夜
2024-08-21
<script setup>
const arr = [
  [{ price: 26, item_name: '测试1' }, { price: 269, item_name: '测试1' }, { price: 546, item_name: '测试1' }],
  [{ price: 75, item_name: '测试2' }, { price: 360, item_name: '测试2' }, { price: 648, item_name: '测试2' }, { price: 914, item_name: '测试2' }],
  [{ price: 142, item_name: '测试3' }, { price: 456, item_name: '测试3' }, { price: 685, item_name: '测试3' }]
]
</script>

<template>
  <div class="container">
    <div class="i" v-for="i of arr">
      <div class="j" v-for="j of i">
        {{ j.item_name }}
      </div>
    </div>
  </div>
</template>

<style>
.container {
  display: flex;

  >.i {
    flex: 1;

    >.j {
      margin: 5px;
      text-align: center;
      border: 1px black solid;
    }
  }
}
</style>

Vue SFC Playground

邹毅
2024-08-21

首先,您提供的数组 arr 并不是一个有效的 JavaScript 数组,因为它缺少了数组元素的分隔符(逗号)。正确的数组格式应该如下:

let arr = [
  [{price: 26, item_name: '测试1'}, {price: 269, item_name: '测试1'}, {price: 546, item_name: '测试1'}],
  [{price: 75, item_name: '测试2'}, {price: 360, item_name: '测试2'}, {price: 648, item_name: '测试2'}, {price: 914, item_name: '测试2'}],
  [{price: 142, item_name: '测试3'}, {price: 456, item_name: '测试3'}, {price: 685, item_name: '测试3'}]
];

接下来,关于在 Vue 3 中如何显示这个数组以使其“竖向”显示(假设您希望每个对象的属性(如 priceitem_name)按列而不是按行显示),您需要首先明确一点:在 HTML 中,通常我们按行(使用 <div><p> 等标签)来组织内容,而不是按列(除非使用 CSS 的列布局)。但是,根据您提供的图片和描述,您可能想要的是按 item_name 排序并显示所有价格,这实际上是按行显示,但每行显示不同 item_name 的所有价格。

如果您的目标是这样的,那么您不需要在循环前特别处理数组 arr,但您需要调整您的模板来正确显示数据。以下是一个简单的 Vue 3 组件示例,它展示了如何实现这一点:

<template>
  <div>
    <div v-for="(group, index) in arr" :key="index">
      <h3>{{ group[0].item_name }}</h3> <!-- 假设每个组的第一个对象有代表性的 item_name -->
      <div v-for="(item, index) in group" :key="index">
        价格: {{ item.price }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      arr: [
        [{price: 26, item_name: '测试1'}, {price: 269, item_name: '测试1'}, {price: 546, item_name: '测试1'}],
        [{price: 75, item_name: '测试2'}, {price: 360, item_name: '测试2'}, {price: 648, item_name: '测试2'}, {price: 914, item_name: '测试2'}],
        [{price: 142, item_name: '测试3'}, {price: 456, item_name: '测试3'}, {price: 685, item_name: '测试3'}]
      ]
    };
  }
};
</script>

在这个例子中,外层循环遍历 arr 中的每个“组”(即每个包含多个对象的数组),内层循环遍历每个组中的每个对象,并显示其价格。每个组的第一个对象的 item_name 被用作该组所有价格的标题。

请注意,这种方法假设每个组内的所有对象都有相同的 item_name。如果这不是情况,您可能需要调整逻辑来更准确地反映您的数据结构和显示需求。

 类似资料:
  • let num = 600; num是最大数为600,然后根据arr数组里面的test的值之和(5+4+5+6)为20, 600 / 20 = 30; 希望得到下面的格式: 图片第一列5个输入框对应数组arr里面下标为0的test的值为5 图片第二列4个输入框对应数组arr里面下标为1的test的值为4 ... 控制1-30之间的随机数里面的输入框修改的时候只能输入1-30的数, 控制31-60之

  • js 数组的数据处理 这个2数字不是固定的, 如果a这个值是2 我需要得到arr为 arr = [9] 如果a这个值是4 我需要得到arr为 arr = [7,8,9] 大佬们帮我看看

  • arr数组最小长度是4最大是8 let num = 600;暂时写死600,这个数自定义输入的 麻烦各位大佬帮忙看看

  • js数据处理 const translations = { 'editor.remove': 'Remove', 'editor.copy': 'Copy', 'editor.words': 'WORDS', 'editor.characters': 'CHARACTERS', 'editor.default': 'Default', 'editor.recent': 'Recently Used

  • // 最大值是1000 let num = 1000; num是最大数为1000,然后根据arr数组里面的test的值之和(3+4+5+6)为18, 1000 / 18 = 55(求整数); 然后需要得到的格式排列的数据如下: 麻烦各位大佬帮忙看看,写了循环,排列的数据格式不对,双循环的排列按顺序的话要怎么写?

  • 根据items数组里面num的值去arr数组里面拿数据,按竖向排序 期望得到数据格式: 麻烦各位大佬看看,感激不尽