filter()数组去重,数组对象去重
filter去重首先要清楚在数组中indexOf的含义
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
1.简单数据类型去重
let arr = ['a', 'b', 'c', 'c', 'd', 'd']
let outPut = arr.filter((item, index) => arr.indexOf(item) == index)
console.log(outPut) // ['a', 'b', 'c', 'd']
2.数组对象去重
let arr = [
{
name: 'Jack'
},
{
name: 'Jack'
},
{
name: 'Tom'
},
{
name: 'Edward'
},
]
let arr2 = arr.filter((item, index) => {
let temArr = []
arr.forEach(item2 => temArr.push(item2.name))
return temArr.indexOf(item.name) == index
})
// 对象的某个属性放入临时数组,对比临时数组中元素所在对象的索引,
// 多个对象可push多个,均不相同return ..&&.. 有一不同 return ..||..
// console.log(arr2)
// [ { name: 'Jack' }, { name: 'Tom' }, { name: 'Edward' } ]
3.数组对象去重
let arr = [
{
name: 'Jack'
},
{
name: 'Jack'
},
{
name: 'Tom'
},
{
name: 'Edward'
},
]
unique(arr) {
const res = new Map();
return arr.filter((arr) => !res.has(arr.name) && res.set(arr.name, 1));
},
this.unique(arr)
4.filter
let list = [{},{}]
const arr = list.filter(item => { return item.dictsCode == this.formInline.sampleType })
if (arr.length) {
//
this.formInline.sampleName = arr[0].dictsNameC
}