第二十二天:ES6数组:两个数组或数组对象取并集、交集、差集记录贴
<h4>ES6数组:两个数组或数组对象取并集、交集、差集记录贴</h4>
<p>文章链接地址: <a href="https://blog.csdn.net/webfullstack/article/details/90041587">https://blog.csdn.net/webfullstack/article/details/90041587</a></p>
<blockquote>
<p>数组</p>
</blockquote>
<p><strong>1 . 取并集</strong></p>
<pre><code class="language-javascript">let a=new Set([1,2,3,4,5]);
let b=new Set([1,2,3,4,5,6,7,8,9]);
let arr = Array.from(new Set([...a, ...b]));
console.log('arr',arr);
// [1,2,3,4,5,6,7,8,9]</code></pre>
<p><strong>2. 取交集</strong></p>
<pre><code class="language-javascript">let a=new Set([1,2,3,4,5]);
let b=new Set([1,2,3,4,5,6,7,8,9]);
let arr = Array.from(new Set([...b].filter(x => a.has(x))));
console.log(arr)
//[1,2,3,4,5]</code></pre>
<p><strong>3. 去差集</strong></p>
<pre><code class="language-javascript">let a=new Set([1,2,3,4,5]);
let b=new Set([1,2,3,4,5,6,7,8,9]);
let arr = Array.from(new Set([...b].filter(x => !a.has(x))));
console.log(arr)
// [6, 7, 8, 9]</code></pre>
<blockquote>
<p>数组对象</p>
</blockquote>
<p><strong>1. 取交集</strong></p>
<pre><code class="language-javascript">let a=[{id:1,a:123,b:1234},{id:2,a:123,b:1234}];
let b=[{id:1,a:123,b:1234},{id:2,a:123,b:1234},{id:3,a:123,b:1234},{id:4,a:123,b:1234}];
let arr = [...b].filter(x => [...a].some(y => y.id === x.id)); //some返回true或false
console.log('arr',arr)
//"arr"
//[[object Object] {
// a: 123,
// b: 1234,
// id: 1
//}, [object Object] {
// a: 123,
// b: 1234,
// id: 2
//}]</code></pre>
<p><strong>2. 去差集</strong></p>
<pre><code class="language-javascript">let a=[{id:1,a:123,b:1234},{id:2,a:123,b:1234}];
let b=[{id:1,a:123,b:1234},{id:2,a:123,b:1234},{id:3,a:123,b:1234},{id:4,a:123,b:1234}];
let arr = [...b].filter(x => [...a].every(y => y.id !== x.id)); //every也返回布尔值
console.log('arr',arr);
//"arr"
//[[object Object] {
// a: 123,
// b: 1234,
// id: 3
//}, [object Object] {
// a: 123,
// b: 1234,
// id: 4
//}]
</code></pre>