前端面试刷题day7(每日更新前端面试高频考察点)

码字不易,有帮助的同学希望能关注一下我的微信公众号:Code程序人生,感谢!代码自用自取。

在这里插入图片描述

每天都提供一道关于前端面试中常见的题目。并且我建立了一个QQ群(425554900),QQ群内提供大量面试题目和答案,包括CSDN每日更新的题目答案。欢迎大家加群交流,打卡,共同进步。

今日题目:

将二维数组转成一维数组的方法有哪些?


题解:

1.1 flat

ES10的方法,默认将二维数组转成一维数组

[
  [1, 3],
  [4, 5],
].flat(); // [1,3,4,5]

flat()可以将任意维数组转成一维数组,只需要传入被扁平化的层数,比如将三维数组转成—维数组就是flat(2)。如果是未知层数,还可以使用参数Infinity。

1.2 concat + 扩展符

[].concat(
  ...[
    [1, 2],
    [3, 4],
  ]
); // [1,2,3,4]

1.3 reduce + concat

[
  [1, 2],
  [3, 4],
].reduce((acc, cur) => acc.concat(cur), []); // [1,2,3,4]

1.4 toString + split

先使用toString把数组转成字符串,再使用split把字符串转回数组:

[
  [1, 2],
  [3, 4],
]
  .toString()
  .split(",")
  .map((item) => +item); // [1,2,3,4]

该方法存在局限性,不适用于一些包含相对特殊子元素的数组,比如包含null、undefined、对象类型等。

1.5 扩展:递归降维

  • forEach
const oldArr = [1, [2, [3, [10]]], [4, 5, 6], 7, 8];
const newArr = [];
const flatArr = (arr) =>
  arr.forEach((item) => {
    
    
    if (Array.isArray(item)) {
    
    
      flatArr(item);
    } else {
    
    
      newArr.push(item);
    }
  });
flatArr(oldArr);
console.log(newArr); //[1, 2, 3, 10, 4, 5, 6, 7, 8]
  • reduce
const oldArr = [1, [2, [3, [10]]], [4, 5, 6], 7, 8];
const flatArr = (arr) =>
  arr.reduce((prev, cur, index, arr) => {
    
    
    if (Array.isArray(cur)) {
    
    
      return prev.concat(...flatArr(cur));
    }
    return prev.concat(cur);
  }, []);
console.log(flatArr(oldArr)); //[1, 2, 3, 10, 4, 5, 6, 7, 8]

我会帮大家把每一天的题目和超级详细的答案整理好,欢迎加群领取当日题目答案和以往题目答案。


关注公众号后,回复【前端面试题】,领取大量前端面试题汇总pdf资料

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46171043/article/details/115049165