js\vue 在数组中动态插入对象和添加修改某一个对象的属性值

<template>

  <div>

    <div

      v-for="item in list"

      :key="item.id"

      class="div"

      @click="handleFn(item)"

    >

      {{ item.name }}

    </div>

    <br />

    <!--:key="`${item.value}_${index}`"是为了 v-for循环里绑定的key出现报错问题 -->

    <div

      v-for="(item, index) in hotList"

      :key="`${item.value}_${index}`"

      class="div"

    >

      {{ item.name }}

    </div>

  </div>

</template>

<script>

export default {

  data() {

    return {

      list: [

        { id: 1, name: "one" },

        { id: 2, name: "two" },

        { id: 3, name: "three" },

        { id: 4, name: "four" },

        { id: 5, name: "five" },

      ],

      hotList: [],

    };

  },

  methods: {

    handleFn(setObj) {

      this.hotList = JSON.parse(localStorage.getItem("hotList")) || [];

      if (setObj) setObj.num = 0; //给setObj对象添加num属性,同时赋值

      function setFn(newList, setObj) {

        newList.length ? newList : newList.push(setObj);

        for (let index = 0; index < newList.length; index++) {

          // 判断当前遍历到对象的id属性值是否等于setObj中的id,

          // 如何数组中的对象不存在该id,则向数组插入setObj,同时num=1

          newList[index].id === setObj.id

            ? newList[index].num++

            : newList.push({ ...setObj, num: 1 });

        }

        // 根据不同对象中的num值大小,对数组重新排序

        newList.sort((a, b) => b.num - a.num);

        return newList;

      }

      this.hotList = setFn(this.hotList, setObj);

      localStorage.setItem("hotList", JSON.stringify(this.hotList));

    },

  },

};

</script>

<style>

.div {

  width: 100px;

  border: 1px solid black;

}

</style>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值