失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > js\vue 在数组中动态插入对象和添加修改某一个对象的属性值

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

时间:2022-05-08 04:02:55

相关推荐

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>

如果觉得《js\vue 在数组中动态插入对象和添加修改某一个对象的属性值》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。