【前端100问】Q11:将多维数组扁平化后去重,最终得到一个升序的新数组

写在前面

此系列来源于开源项目:前端 100 问:能搞懂 80%的请把简历给我
为了备战 2021 春招
每天一题,督促自己
从多方面多角度总结答案,丰富知识
将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组

正文回答

考点

数组扁平、去重、升序排列

几种解决思路

Array.from(new Set(arr.flat(Infinity))).sort((a, b) => {
  return a - b;
});
// 此方法没有解决重复
arr
  .toString()
  .split(",")
  .sort((a, b) => {
    return a - b;
  })
  .map(Number);
// 扁平化
Array.prototype.flat = function () {
  return [].concat(
    ...this.map((item) => (Array.isArray(item) ? item.flat() : [item]))
  );
};

// 去重
Array.prototype.unique = function () {
  return [...new Set(this)];
};

// 排序
const sort = (a, b) => a - b;
var old_arr = [
  [1, 2, 2],
  [3, 4, 5, 5],
  [6, 7, 8, 9, [11, 12, [12, 13, [14]]]],
  10,
];

// 数组拍平
var level_arr = old_arr.flat(4);

//数组去重
var Distinct = Array.from(new Set(level_arr));

// 排序
var sort = Distinct.sort((a, b) => a - b);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容