数组根据某字段去重
objTrim(arr,key){
let obj = {};
arr = arr.reduce((cur,next) => {
obj[next[key]] ? "" : obj[next[key]] = true && cur.push(next);
return cur;
},[]);
return arr;
},
求出两个数组的交集和差集
let intersection = a.filter(v => b.includes(v))
let difference = a.concat(b).filter(v => !a.includes(v) || !b.includes(v))
判断两个数组元素是否相等
isArrEqual(listA,listB){
return listA.length === listB.length && listA.every(a => listB.some(b => a === b)) && listB.every(_b => listA.some(_a => _a === _b));
}
判断一个数组是否包含另一个数组
isContainArr(parent, child) {
return child.every(item => parent.some(v => item == v))
}
取出两个数组的不同元素
getArrDifference(arr1, arr2) {
return arr1.concat(arr2).filter((v, i, arr) => {
return arr.indexOf(v) === arr.lastIndexOf(v);
});
},
数组根据某字段分组
返回数组对象包括name和data两个字段,data中包括原数组对象中所有字段。
groupByType(arr,param) {
var map = {},
dest = [];
for(var i = 0; i < arr.length; i++){
var ai = arr[i];
if(ai[param] && !map[ai[param]]){
dest.push({
name: ai[param],
data: [ai]
});
map[ai[param]] = ai;
}else{
for(var j = 0; j < dest.length; j++){
var dj = dest[j];
if(dj.name == ai[param]){
dj.data.push(ai);
break;
}
}
}
}
return dest;
}