日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

js 数组的交集、补集、并集

發布時間:2023/12/15 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 js 数组的交集、补集、并集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
// 交集
const intersection = function (arr1,arr2) {
    let mergeArr = arr1 && arr2 && arr1.concat(arr2);
    arr1 = arr2Id(arr1);
    arr2 = arr2Id(arr2);
    let idArr = arr1 && arr1.filter(item=>arr2.includes(item));
    return id2Arr(idArr,mergeArr);
}
// 并集
const union = function (arr1,arr2){
    let mergeArr = arr1 && arr2 && arr1.concat(arr2);
    let _arr1 = arr2Id(arr1);
    let _arr2 = arr2Id(arr2);
    let idArr = [...new Set(_arr1.concat(_arr2))];
    return id2Arr(idArr,mergeArr);
}
// 補集
const complement = function(arr1,arr2){
    let mergeArr = arr1 && arr2 && arr1.concat(arr2);
    arr1 = arr2Id(arr1);
    arr2 = arr2Id(arr2);
    let idArr = arr1.filter(item=>!arr2.includes(item));
    return id2Arr(idArr,mergeArr);
}

// 提取對象數組中的對象id
const arr2Id = (arr) => {
    return arr && arr.map(item=>item.id ? item.id : item);
}
// 通過id數組來還原對象數組
const id2Arr = (idArr, arr) => {
    return idArr && idArr.map(id=>{
        let curr = id;
        arr && arr.forEach(item => item.id===id && (curr=item));
        return curr;
    })
}





/**
 * ============測試================
 */
/**
 * 情形1:
// 基本數據類型數組
 */

const arr1=[1,2,3,5,6];
const arr2=[1,2,6,7,8];
/**
 * 情形2:
 * 對象類型數組
 */
const objArr1=[
    {id:'001',name:'zhangsan'},
    {id:'002',name:'tom'},
    {id:'003',name:'jack'},
    {id:'004',name:'fei'},
    {id:'005',name:'ming'}
];
const objArr2=[
    {id:'003',name:'jack'},
    {id:'005',name:'ming'},
    {id:'007',name:'hello'},
    {id:'008',name:'milk'},
];
/**
 * 情形3:
 * 基本類型和對象雜糅
 */
const multiArr1=[
    {id:'001',name:'zhangsan'},
    {id:'002',name:'tom'},
    {id:'003',name:'jack'},
    true,
    {id:'005',name:'ming'}
];
const multiArr2=[
    {id:'003',name:'jack'},
    {id:'005',name:'ming'},
    true,
    {id:'008',name:'milk'},
];
console.log('交集:',intersection(multiArr1,multiArr2));
console.log('并集:',union(objArr1,objArr2));
console.log('補集:',complement(arr1,arr2));

總結

以上是生活随笔為你收集整理的js 数组的交集、补集、并集的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。