数据过滤
1 基本数据类型和引用数据类型
基本数据类型:Number、String 、Boolean、Null和Undefined。基本数据类型是按值访问的,因为可以直接操作保存在变量中的实际值。
引用型数据类型:Object 、Array 、Function 、Date等。
javascript的引用数据类型是保存在堆内存中的对象,你不可以直接访问堆内存空间中的位置和操作堆内存空间。只能操作对象在栈内存中的引用地址。
所以,引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存中堆内存中的对象。
2 es6可用的求交集 差集 并集的方法
只适用于基本数据类型
filter+some,filter+includes ,filter+any,filter+==, set+filter+has
2.2 set has不能使用的实例
var mySet = new Set();
mySet.add('foo');
mySet.has('foo'); // 返回 true
mySet.has('bar'); // 返回 false
var set1 = new Set();
var obj1 = {'key1': 1};
set1.add(obj1);
set1.has(obj1); // 返回 true
set1.has({'key1': 1}); // 会返回 false,因为其是另一个对象的引用
set1.add({'key1': 1}); // 现在 set1 中有2条(不同引用的)对象了
3 适用于引用型数据类型
var obja=[{name:'lili',age:18},{name:'ww',age:18},
{name:'ee',age:18},{name:'rr',age:18}]
var objb=[{name:'lili',age:13},{name:'ww',age:18},
{name:'ee',age:19},{name:'rr',age:11},{name:'oo',age:11}]
//差集
1)var objc=obja.filter((item,index)=>{
for(var i=0;i<objb.length;i++){
debugger;
if(item.name==objb[i].name&&item.age==objb[i].age){
return false
}
}
return true
})
console.log(objc)
2)var objc=obja.filter((item,index)=>{
for(var i=0;i<objb.length;i++){
if(JSON.stringify(item)==JSON.stringify(objb[i])){
return false
}
}
return true
})
console.log(objc)