【前端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);

你可能感兴趣的:(【前端100问】Q11:将多维数组扁平化后去重,最终得到一个升序的新数组)