FE-Interview
FE-Interview copied to clipboard
按要求实现代码
// 给两个数组 [A1,A2,B1,B2,C1,C2,D1,D2] [A,B,C,D]
// 输出 [A1,A2,A,B1,B2,B,C1,C2,C,D1,D2,D]
扫描下方二维码,获取答案以及详细解析,同时可解锁800+道前端面试题。
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']));
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'
// ]
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"])
);
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) ) ) );
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
},[])
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
}
})
}
// 给两个数组 [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']))