vue对选中的集合进行去重

今天遇到一个需求,bpm系统通过路由链接回传一些信息,我们需要反向回显,但是在开发的时候 遇到选中的数据有重复的情况,这里做一下去重的记录。
const map = new Map()
const temp = selection.filter(key => !map.has(key.invoiceNo) && map.set(key.invoiceNo, 1))
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用 `lodash` 库的 `uniqBy` 方法来对多字段集合进行去重。 假设有以下数据: ```javascript const data = [ { id: 1, name: 'Alice', age: 20 }, { id: 2, name: 'Bob', age: 21 }, { id: 3, name: 'Alice', age: 20 }, { id: 4, name: 'Charlie', age: 22 }, { id: 5, name: 'Bob', age: 21 } ]; ``` 要根据 `name` 和 `age` 两个字段进行去重,可以这样写: ```javascript import _ from 'lodash'; const uniqueData = _.uniqBy(data, item => `${item.name}_${item.age}`); ``` 这里使用了模板字符串来将 `name` 和 `age` 拼接成一个字符串,作为去重依据。最终得到的 `uniqueData` 数组如下: ```javascript [ { id: 1, name: 'Alice', age: 20 }, { id: 2, name: 'Bob', age: 21 }, { id: 4, name: 'Charlie', age: 22 } ] ``` 可以看到,原数组重复的 `{ id: 3, name: 'Alice', age: 20 }` 和 `{ id: 5, name: 'Bob', age: 21 }` 已经被去重了。 ### 回答2: 在Vue,可以使用computed属性来根据多个字段对集合进行去重操作。下面是一个示例代码: ```javascript data() { return { items: [ { id: 1, name: 'John', age: 25 }, { id: 2, name: 'Jane', age: 30 }, { id: 3, name: 'John', age: 25 }, { id: 4, name: 'Jane', age: 30 } ] }; }, computed: { uniqueItems() { const uniqueSet = new Set(); const uniqueArray = []; this.items.forEach(item => { const key = item.name + item.age; if (!uniqueSet.has(key)) { uniqueSet.add(key); uniqueArray.push(item); } }); return uniqueArray; } } ``` 在上述代码,我们首先使用data属性定义了一个包含多个对象的items数组。然后在computed属性定义了一个uniqueItems属性来进行去重操作。 在uniqueItems属性的计算函数,我们使用一个Set对象来存储已经遍历过的字段组合,以确保集合的元素是唯一的。我们还创建了一个空数组uniqueArray来存储唯一的对象。 接下来,我们使用forEach方法遍历items数组的每个对象。对于每个对象,我们将其的name和age字段的值连接起来,作为唯一标识该对象的键。 然后,我们检查uniqueSet是否已经存在相同的键。如果不存在,我们将该键添加到uniqueSet,并将对应的对象添加到uniqueArray。 最后,我们返回uniqueArray作为uniqueItems的计算结果,这样在模板可以直接使用uniqueItems获取到去重后的集合。 这样,我们就能根据多个字段对Vue集合进行去重了。 ### 回答3: 在Vue,可以使用计算属性和Set数据结构来根据多个字段进行去重。 首先,我们需要定义一个计算属性来进行去重操作。假设我们有一个数组dataList,其包含多个对象,每个对象都有多个字段。我们可以使用Set数据结构来创建一个唯一的、没有重复值的新数组。 ```javascript computed: { uniqueDataList() { const uniqueSet = new Set(); this.dataList.forEach(item => { const key = item.field1 + item.field2 + item.field3; //组合多个字段作为唯一标识 uniqueSet.add(key); }); return Array.from(uniqueSet).map(key => { const fields = key.split(','); return { field1: fields[0], field2: fields[1], field3: fields[2] }; }); } } ``` 在上述代码,我们使用forEach方法遍历dataList数组的每个对象,然后将多个字段的值合并为一个唯一的字符串作为Set的键。Set会自动去重,确保没有重复的键值。 最后,我们将Set转换为数组,并使用map方法将字符串键再拆分为多个字段,构造一个新的对象。这样,我们就得到了一个根据多个字段集合去重后的新数组uniqueDataList。 最后,在Vue模板,你可以直接使用uniqueDataList来展示去重后的数组数据。 ```html <template> <div> <ul> <li v-for="item in uniqueDataList" :key="item.id"> {{ item.field1 }} - {{ item.field2 }} - {{ item.field3 }} </li> </ul> </div> </template> ``` 以上就是在Vue根据多个字段集合进行去重的方法,希望能对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还算善良_

如果对你的工作有所帮助,拜托啦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值