去重,是一个经常遇到的问题,
ES6给我们提供了Set数据结构,对于js基本类型去重使用此方法比较有效
Set转Array也可以使用解构[...setObj],或者Array.from来处理
但是对于对象数组,Set并不会进行去重,而需要通过循环遍历进行处理。
<template>
<div>
<Alert show-icon>当前 iView 版本为 3.3.2</Alert>
</div>
</template>
<script>
export default {
data () {
return {
}
},
methods: {
moveRepeat() {
let person = [
{id: 0, name: "小明"},
{id: 1, name: "小张"},
{id: 2, name: "小李"},
{id: 3, name: "小孙"},
{id: 1, name: "小周"},
{id: 2, name: "小陈"},
];
let obj = {};
person = person.reduce((cur,next) => {
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
return cur;
},[]) //设置cur默认类型为数组,并且初始值为空的数组
console.log('person',person);
},
// 上述这个方法是利用reduce做循环操作判断,原理如下
moveRepeatMine() {
let person = [
{id: 0, name: "小明"},
{id: 1, name: "小张"},
{id: 2, name: "小李"},
{id: 3, name: "小孙"},
{id: 1, name: "小周"},
{id: 2, name: "小陈"},
];
let obj = {};
let finallyPerson = []
person.forEach((item)=>{
if(!obj[item.id]){
obj[item.id] = true
finallyPerson.push(item);
}
})
console.log('finallyPerson',finallyPerson);
}
},
mounted () {
//this.moveRepeat();
this.moveRepeatMine();
}
}
</script>
<style>
</style>
可在
https://run.iviewui.com/
运行
参考自:
去重
https://www.cnblogs.com/caideyipi/p/7679681.html
array.from
https://www.cnblogs.com/jf-67/p/8440758.html
网友评论