JavaScript
对象的交集、并集和差集
交集、并集、差集 交集:对于两个给定集合 A、B,由属于 A 又属于 B 的所有元素构成的集合,叫做 A 和 B 的交集。A={1,2,3,4,5},B={3,4,5,6,8},A∩B={3,4,5} 并集:对于两个给定集合 A、B,由两个集合所有元素构成的集合,叫做 A 和 B 的并集。例: {3,5}U{2,3,4,6}= {2,3,4,5,6} 差集:记 A,B 是两个集合,则所有属于 A …
交集、并集、差集 交集:对于两个给定集合 A、B,由属于 A 又属于 B 的所有元素构成的集合,叫做 A 和 B 的交集。A={1,2,3,4,5},B={3,4,5,6,8},A∩B={3,4,5} 并集:对于两个给定集合 A、B,由两个集合所有元素构成的集合,叫做 A 和 B 的并集。例: {3,5}U{2,3,4,6}= {2,3,4,5,6} 差集:记 A,B 是两个集合,则所有属于 A …

定义数组成员为非引用类型的数组称为普通数组
var a = [1, 2, 3];
var b = [2, 4, 5];
// 交集
let intersection = a.filter(v => b.includes(v));
// [2]
// 差集
let diff = a.concat(b).filter(v => a.includes(v) && !b.includes(v));
// [1, 3]
// 并集
let union = a.concat(b.filter(v => !a.includes(v)));
// [1, 2, 3, 4, 5]
定义数组成员为引用类型的数组称为数组对象
var a = [
{ code: 1, value: "a1" },
{ code: 2, value: "a2" },
{ code: 3, value: "a3" }
];
var b = [
{ code: 1, value: "b1" },
{ code: 2, value: "b2" },
{ code: 4, value: "b3" }
];
// some,遍历数组中所有元素满足return条件,如果满足,返回满足前的,包含满足的
// a与b的交集
let intersection = a.filter(x => b.some(y => x.code === y.code));
// [{ code: 1, value: "a1" }, { code: 2, value: "a2" }];
// every,测试数组中所有元素满足return条件,如果不满足,返回不满足的前的,包含不满足的
// a对b的差集
let diff = a.filter(x => b.every(y => x.code !== y.code));
// [{code: 3, value: "b3"}]
// b与a的并集,b与a有相同的code,用b覆盖a的,同时添上a没有b的成员
let diff = b.filter(x => a.every(y => x.code !== y.code));
let temp = a;
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < b.length; j++) {
if (a[i].code === b[i].code) {
temp[i] = b[i];
}
}
}
let union = temp.concat(diff);
// [
// { code: 1, value: "b1" },
// { code: 2, value: "b2" },
// { code: 3, value: "a3" },
// { code: 4, value: "b3" }
// ];
暂无评论
确认操作
请再次确认编辑图片
待上传图片 (剩余 0 张)
项目详情
确认评论邮箱
邀请制评论