如果满足 Vue JS 中的特定条件,如何对特定数组项进行编号?

How to number specific array items if they meet specific condition in Vue JS?

假设我的 vue 状态中有如下所示的对象数组:

[
 {name: "Daniel", default: false},
 {name: "Ross", default: true},
 {name: "Rachel", default: false},
 {name: "Joey", default: false}
 {name: "Monica", default: true}
 {name: "Gunther", default: true}
]

在我的网页上,所有这些名称都已显示在列表中。我想在我的网页上显示如下:

从上面的例子来看,我想我想达到的目的已经很清楚了。在 vue 中实现这个最简单的方法是什么?

你可以试试这个:

let defaultCount = 0;
const data = [
  { name: "Daniel", default: false },
  { name: "Ross", default: true },
  { name: "Rachel", default: false },
  { name: "Joey", default: false },
  { name: "Monica", default: true },
  { name: "Gunther", default: true },
].map((el) => {
  if (el.default) {
    defaultCount++;
    return {
      ...el,
      defCount: defaultCount,
    };
  } else {
    return {
      ...el,
      defCount: null,
    };
  }
});

console.log(data);

<li v-for="(item) in array" :key="item.name">
{{`${item.name}${item.defCount? ` - Default ${item.defCount}`:''}`}}
</li>

您可以使用 Array.map 遍历所有数组元素并生成您想要的结果

const data = [
  { name: "Daniel" , default: false },
  { name: "Ross"   , default: true },
  { name: "Rachel" , default: false },
  { name: "Joey"   , default: false },
  { name: "Monica" , default: true },
  { name: "Gunther", default: true }
];

let defaultCount = 0;
const res = data.map(item => `${item.name}${item.default? ` default ${++defaultCount}`:''}`)

console.log(res)

尝试使用 computed 属性。检查下面的代码片段

var app = new Vue({
  el: '#app',
  data() {
    return {
      list: [
       {name: "Daniel", default: false},
       {name: "Ross", default: true},
       {name: "Rachel", default: false},
       {name: "Joey", default: false},
       {name: "Monica", default: true},
       {name: "Gunther", default: true},
      ]
    };
  },
  computed: {
    getList() {
      let index = 1;
      return this.list.map(item => {
        return item.default ? `${item.name} - Default ${index++}` : `${item.name}`;
      });
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<template>
 <ul>
  <li v-for="(item, index) in getList" :key="index">
  {{item}}
  </li>
 </ul>
</template>
</div>