赞
踩
首先第一道阿里让我用 arr = [3, [[7, [1, 5]], 4], 8, [6]];将他转化为一个平铺的数组,并将他转化为从小大的顺序排列
方法一
- function flattenAndSort(array) {
- return array.reduce((result, element) => {
- // 如果元素是数组,则递归调用flattenAndSort
- if (Array.isArray(element)) {
- console.log(element, "1");
- result = result.concat(flattenAndSort(element));
- } else {
- result.push(element);
- }
- return result;
- }, []).sort((a, b) => a - b); // 排序数组
- }
- const flattenedAndSortedArray = flattenAndSort(arr);
- console.log(flattenedAndSortedArray, "27");
方法二
- function getArry(arr) {
- const trust= []
- function fn(arr) {
- arr.forEach(element => {
- if (Array.isArray(element)) {
- fn(element);
- } else {
- trust.push(element);
- }
- });
- }
- fn(arr)
- return trust.sort((a, b) => a - b)
- }
- const trust = getArry(arr)
- console.log(trust);
第二道题面试官考我了一个promise.all的方法
- function flattenAndSortAsync(array) {
- return Promise.all(
- array.map(element => {
- return new Promise((resolve, reject) => {
- if (Array.isArray(element)) {
- // 如果元素是数组,递归调用 flattenAndSortAsync
- flattenAndSortAsync(element)
- .then(subArray => resolve(subArray))
- .catch(error => reject(error));
- } else {
- // 如果元素不是数组,直接返回该元素
- resolve(element);
- }
- });
- })
- ).then(flattenedArray => flattenedArray.flat().sort((a, b) => a - b));
- }
-
- const arr = [3, [7, [1, 5]], 4, 8, [6]];
-
- // 使用 Promise.all 方法
- flattenAndSortAsync(arr)
- .then(result => {
- console.log(result);
- })
- .catch(error => {
- console.error(error);
- });
当初因为聊的比较不错,所以手写的就考了2道,大部分考的都是面试题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。