题目要求:

  1. arr_1 = [A1, A2, A3, B1, B2, B3, C1, C2, C3, D1, D2]
  2. arr_2 = [A, B, C, D]
  3. 合并为:
  4. arr = [A1, A2, A3, A, B1, B2, B3, B, C1, C2, C3, C, D1, D2, D]

步骤:

(1)利用正则匹配

方法一: 以 arr2内的元素 为正则,匹配 数组1(能匹配到则往后走,匹配不到就停下,记为索引)用记录下索引位置,在对应的位置插入 数组2的元素

  1. let arr_1 = ['A1', 'A2', 'A3','B1', 'B2', 'B3', 'C1', 'C2', 'C3', 'D1', 'D2']
  2. let arr_2 = ['A', 'B', 'C', 'D']
  3. function combinArr(arr1, arr2) {
  4. let res = arr1;
  5. let curIndex = 0;
  6. for (const item of arr2) {
  7. const reg = new RegExp(item)
  8. while(curIndex < arr1.length){
  9. // RegExp的实例方法:test,用于匹配正则表达式
  10. if(!reg.test(arr1[curIndex])){
  11. res.splice(curIndex, 0, item);
  12. // 匹配到了由于要跳出循环,所以要直接加一
  13. curIndex ++;
  14. break;
  15. }
  16. curIndex ++;
  17. }
  18. }
  19. return res
  20. }
  21. console.log(combinArr(arr_1, arr_2));