去重:
数组去重得分以下三种情况:数组里是数字、数组里是字符串、数组里是对象。前两种直接使用jquery提供的unique方法就可实现。
一、数字: 二、字符串:
let arr = [1, 1, 2, 4, 2]; let arr1 = ['b', 'a', 'v', 'a'];
let newArr = $.unique(arr); let newArr = $.unique(arr1);
console.log(newArr); console.log(newArr);
输出:[1,2,4] 输出:['a', 'b', 'v']
三、对象:
//可接第二种方式来实现:先将对象转为字符串,然后去重后再转为json对象
let oData = [
{name:'张三',value:'1'},
{name:'张三',value:'1'},
{name:'李四',value:'2'},
{name:'王五',value:'3'},
];
var newData = [];
//将json对象转为字符传
for(var i in oData){
oData[i] = JSON.stringify(oData[i]);
newData.push(oData[i]);
}
oData = [];
//去重
newData = $.unique(newData);
//转为json对象
for(var j in newData){
newData[j] = JSON.parse(newData[j]);
oData.push(newData[j]);
}
求差集、交集:
应用场景:有2个列表,需要做到一一对应也就是映射的关系。说人话就是:选过之后的值就不能再选。
let allArr = ['a', 'b', 'c', 'd', 'e'];
let checkArr = ['a', 'd', 'e'];
function getDiffrentSet (allArr, arr2) {
var resultArr = [];
for (let i in allArr) {
//if (checkArr.indexOf(allArr[i]) < 0) { //差集["c", "b"]
if (checkArr.indexOf(allArr[i]) >= 0) { //交集["a", "d", "e"]
resultArr.push(checkArr[i]);
}
}
return resultArr;
}