上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

有规律的合并两个数组

[复制链接]
  • TA的每日心情
    开心
    2022-3-7 09:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    18

    主题

    93

    帖子

    119

    积分

    中级工程师

    Rank: 5Rank: 5

    积分
    119
    发表于 2022-2-24 10:52:21 | 显示全部楼层 | 阅读模式
    //有规律的合并两个数组
    // ['A1','A2','A3','B1','B2','C1','C2','C3','D1','D2']-数组1
    // ['A','B','C','D']-数组2
    // 合并为 ['A1','A2','A3','A','B1','B2',"B",'C1','C2','C3',"C",'D1','D2',"D"]
    const easyCloneObj=obj=>JSON.parse(JSON.stringify(obj)) 
    
    // 1.遍历数组2,使用数组2的元素作为正则,匹配数组1
    function combine1(arr1,arr2){
         let currentIndex=0
         let result=easyCloneObj(arr1)
        for(let i=0;i<arr2.length;i++){
           const reg=new RegExp(arr2[i])
           while(currentIndex++<result.length){
                if(!reg.test(result[currentIndex])){
                  result.splice(currentIndex,0,arr2[i])
                  break;
                }
           }
        }
        // console.log(arr1)
        return result
    }
    // const arr3=combine1(['A1','A2','A3','B1','B2','C1','C2','C3','D1','D2'],['A','B','C','D'])
    // console.log(arr3)
    
    //遍历数组1,使用数组1首字符去匹配数组二的元素
    function combine2(arr1,arr2){
       let result=[]
       let j=0
       for(let i=0;i<arr1.length;i++){
         const char=arr1[i][0]
         if(char==arr2[j]){
           result.push(arr1[i])
         }else{
           result.push(arr2[j])
           result.push(arr1[i])
           j++
         }
         //当最后一轮循环中不会再有别的字符,进入不了else分支
         //导致arr2的最后一个元素没有push进来需要特殊处理
         if(i==arr1.length-1){
           result.push(arr2[j])
         }
       }
       return result
    }
    const arr4=combine2(['A1','A2','A3','B1','B2','C1','C2','C3','D1','D2'],['A','B','C','D'])
    console.log(arr4)
    
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 49 天

    [LV.5]常住居民I

    138

    主题

    1822

    帖子

    1994

    积分

    管理员

    Rank: 10Rank: 10Rank: 10

    积分
    1994

    猫咪币纪念章热心会员活跃会员突出贡献三好学生中秋纪念章国庆纪念章

    发表于 2022-2-24 12:04:35 | 显示全部楼层
    感觉一个for循环,每次与第二个比较 O(n)
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-3-7 09:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    18

    主题

    93

    帖子

    119

    积分

    中级工程师

    Rank: 5Rank: 5

    积分
    119
    发表于 2022-2-24 12:16:14 | 显示全部楼层
    王一之 发表于 2022-2-24 12:04
    感觉一个for循环,每次与第二个比较 O(n)

    我不懂时间复杂度和空间复杂度,我就是写出来就行了
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表