FE-Interview icon indicating copy to clipboard operation
FE-Interview copied to clipboard

按要求实现代码

Open lgwebdream opened this issue 5 years ago • 10 comments

// 给两个数组 [A1,A2,B1,B2,C1,C2,D1,D2] [A,B,C,D]
// 输出 [A1,A2,A,B1,B2,B,C1,C2,C,D1,D2,D]

lgwebdream avatar Jul 06 '20 15:07 lgwebdream

扫描下方二维码,获取答案以及详细解析,同时可解锁800+道前端面试题。

lgwebdream avatar Jul 06 '20 15:07 lgwebdream

function insertArr(arrA = [], arrB = []){
    if(!arrA || !arrA.length) return arrB;
    if(!arrB || !arrB.length) return arrA;
    const arr = JSON.parse(JSON.stringify(arrA));
    arr.sort((a, b) => a.localeCompare(b));
    const result = [];
    for (const str of arrB) {
        const temp = arr.filter(item => item.includes(str));
        result.push(...temp, str);
    }
    return result;
}
console.log(insertArr(['A1','A2','B1','B2','C1','C2','D1','D2'], ['A','B','C','D']));

GolderBrother avatar Aug 31 '20 13:08 GolderBrother

function compositonArr(arrA, arrB) {
    if (!arrA || Array.isArray(arrA) && arrA.length === 0) return arrB;
    if (!arrB || Array.isArray(arrB) && arrB.length === 0) return arrA;
    let result = [];
    for (const item of arrB) {
        const arr = arrA.filter(i => i.includes(item));
        result = [...result, ...arr, item];
    }
    return result;
}
const A = ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'];
const B = ['A', 'B', 'C', 'D'];
console.log(compositonArr(A, B));
// [
//     'A1', 'A2', 'A',  'B1',
//     'B2', 'B',  'C1', 'C2',
//     'C',  'D1', 'D2', 'D'
//   ]

GolderBrother avatar Sep 06 '20 09:09 GolderBrother

function fn(arr1, arr2) {
  let i = 0;
  return arr1
    .reduce((acc, item) => {
      if (item.startsWith(arr2[i])) {
        return acc.concat(item);
      }
      return acc.concat(arr2[i++], item);
    }, [])
    .concat(arr2[i]);
}

console.log(
  fn(["A1", "A2", "B1", "B2", "C1", "C2", "D1", "D2"], ["A", "B", "C", "D"])
);

Xiaolong96 avatar Mar 24 '21 09:03 Xiaolong96

let arr1 = ["A1", "A2", "B1", "B2", "C1", "C2", "D1", "D2"]; let arr2 = ["A", "B", "C", "D"]; console.log( [...arr1, ...arr2].sort( (v2, v1) => ( v2.codePointAt(0) - v1.codePointAt(0) || v1.length - v2.length || v2.codePointAt(1) - v1.codePointAt(1) ) ) );

yinsw1994 avatar May 16 '21 11:05 yinsw1994

let a = ['A1','A2','B1','B2','C1','C2','D1','D2'] ,b=['A','B','C','D'];

let res = a.reduce((pre,cur,index)=>{
    pre.push(cur)
    let find = b.find(item=>cur.indexOf(item) !==-1)
    if(!a[index+1] || (a[index+1].indexOf(find) === -1)){
        //如果下一项存在 且 下一项不是这个类
        pre.push(find)
    }
    return pre 
},[])



wz-china avatar Oct 31 '21 15:10 wz-china

    function mergeSort(arr1, arr2) {
      return [...arr1, ...arr2].sort(function (a, b) {
        if (a.padEnd(2, a) > b.padEnd(2, b)) {
          return 1
        } else {
          return -1
        }
      })
    }

lang711 avatar Aug 28 '22 14:08 lang711

// 给两个数组 [A1,A2,B1,B2,C1,C2,D1,D2] [A,B,C,D]
// 输出 [A1,A2,A,B1,B2,B,C1,C2,C,D1,D2,D]

const main = (arr1, arr2) => {
  const arr = [...arr2, ...arr1]
  const obj = arr.reduce((pre, cur) => {
    return { ...pre, [cur[0]]: [...(pre[cur[0]] || []), cur] }
  }, {})
  for (const key in obj) {
    obj[key] = obj[key].sort((a, b) => {
      const aNum = a.slice(1) || Number.MAX_VALUE
      const bNum = b.slice(1) || Number.MAX_VALUE
      return aNum - bNum
    })
  }
  const objKey = Object.keys(obj).sort((a, b) => a.toLocaleUpperCase() > b.toLocaleUpperCase() ? 1 : -1)
  return objKey.reduce((pre, cur) => {
    return [...pre, ...obj[cur]]
  }, [])
}

console.log(main(['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'], ['A', 'B', 'C', 'D']))

DaphnisLi avatar May 22 '23 15:05 DaphnisLi