月份选择每个月不能重复

  • 效果图

选择月份,每月只能选一次

  • 实现数组里选择月份,月份只能选一次不能重复
  • reject 方法用于从集合中移除符合特定条件的元素,返回剩余不符合条件的元素。其语法与 filter 方法相反,常用于反向筛选场景。

  • some 函数用于判断集合中是否存在符合特定条件的元素。其核心功能是遍历数组或对象集合,对每个元素执行回调函数,当回调函数返回 true 时立即停止遍历并返回 true,否则返回 false

      <template>
        <div>
          <el-form @submit.native.prevent
                  :label-width="$px2rem('100px')">
            <el-form-item label="月份:"
                          v-for="(item,index) in monthList"
                          :key="index">
              <el-select v-model="item.month"
                        filterable
                        clearable
                        placeholder="请选择">
                <el-option v-for="item in getMonthOptions(item)"
                          :key="item.id"
                          :label="item.name"
                          :value="item.id">
                </el-option>
              </el-select>
            </el-form-item>
          </el-form>
        </div>
      </template>
    
      <script lang="ts">
        import { Component, Vue } from "vue-property-decorator";
    
        import _ from "lodash";
    
        @Component({
          name: "pageName",
          components: {},
        })
        export default class extends Vue {
          monthList = [
            {
              month: "",
            },
            {
              month: "",
            },
            {
              month: "",
            },
            {
              month: "",
            },
            {
              month: "",
            },
            {
              month: "",
            },
          ];
          monthData = [
            {
              id: 1,
              name: "1月",
            },
            {
              id: 2,
              name: "2月",
            },
            {
              id: 3,
              name: "3月",
            },
            {
              id: 4,
              name: "4月",
            },
            {
              id: 5,
              name: "5月",
            },
            {
              id: 6,
              name: "6月",
            },
            {
              id: 7,
              name: "7月",
            },
            {
              id: 8,
              name: "8月",
            },
            {
              id: 9,
              name: "9月",
            },
            {
              id: 10,
              name: "10月",
            },
            {
              id: 11,
              name: "11月",
            },
            {
              id: 12,
              name: "12月",
            },
          ];
          getMonthOptions(row) {
            const options = this.monthData || [];
            const list = _.reject(this.monthList, row);
            return options.filter(el => !_.some(list, { month: el?.id }));
          }
        }
      </script>
    
      <style lang="scss" scoped>
      </style>
    
posted @ 2025-08-12 16:19  不完美的完美  阅读(6)  评论(0)    收藏  举报