一,简单数组
两数组a = [1, 2, 3],b = [2, 4, 5],求a,b数组
var a = [1,2,3];
var b = [2,4,5];
// 并集
var union = a.concat(b.filter(function(n) {
return a.indexOf(n) === -1})) // [1,2,3,4,5]
// 交集
var intersection = a.filter(function(n){ return b.indexOf(n) > -1 }) // [2]
// 差集
var difference = a.filter(function(n){ return b.indexOf(n) === -1 })// [1,3]
二,两个数组对象形式
var arrOne = [ { name:'张三' },{ id: 1 } ]
var arrTwo = [ { name:'李四' },{ id: 2 } ]
this.arrOne = [...arrOne].filter(x => [...arrTwo].some(y => y.id === x.id))
三,如果是多个数组对象的形式
//在第二个的基础上我添加了一个循环去把所有的数组进行了对比交集
changeAttList (data) {
var list = data.measures
this.arrOne = list[0].attArray
this.arrTwo = list[0].presetAtt
for (var i = 0; i < list.length; i++) {
if (list.length > 1 && list[i].attArray.length > 1) {
this.arrOne = [...this.arrOne].filter(x => [...list[i].attArray].some(y => y.id === x.id))
}
}
for (var j = 0; j < list.length; j++) {
if (list.length > 1 && list[j].presetAtt.length > 1) {
this.arrTwo = [...this.arrTwo].filter(x => [...list[j].presetAtt].some(y => y.id === x.id))
}
}
this.globalAttList.attArray = this.arrOne
this.globalAttList.property = this.arrTwo
},