【面试题】JS实现数组扁平化处理,妙不可言啊!

JS实现数组扁平化处理

点击打开视频讲解更加详细

期望结果: 
      将数组扁平化并去重
      最终得到一个升序且不重复的数组 
步骤: 
      1、数组扁平化 
      2、去重 
      3、排序
<template>
  <div id="home">
    JS实现数组扁平化处理,妙不可言啊!
    <!-- 期望结果: 
      将数组扁平化并去重
      最终得到一个升序且不重复的数组 
    步骤: 
      1、数组扁平化 
      2、去重 
      3、排序 -->
  </div>
</template>

<script>
export default {
  name: "home",
  data() {
    return {
      arr: [
        [1, 2, 3],
        [3, 4, 5, 5],
        [6, 7, 8, 9],
        [11, 12, [12, 12, [13]]],
        10,
      ],
    };
  },
  mounted() {
    // 方法 1
    // let list = this.flat(this.arr);
    // console.log(list);
    // 方法 2
    let list2 = this.flat2(this.arr);
    console.log(list2);
  },
  components: {},
  methods: {
    //1、方法1 使用递归;数组扁平化处理
    flat(arr) {
      let result = arr.map((item) => {
        if (Array.isArray(item)) {
          return this.flat(item);
        }
        return [item];
      });
      return this.removal([].concat(...result));
    },

    //方法2 使用while循环;处理数组扁平化
    flat2(arr) {
      while (arr.some((item) => Array.isArray(item))) {
        arr = [].concat(...arr);
      }
      return this.removal(arr);
    },

    // 2、去重
    removal(arr) {
      // return Array.from(new Set(arr));
      return this.sort(Array.from(new Set(arr)));
    },
    //3、排序
    /**
     * 正数 a > b 降序(倒序)
     * 0    a = b
     * 负数 a < b 升序
     */
    sort(arr) {
      return arr.sort((a, b) => a - b);
    },
  },
};
</script>

<style scoped>
</style>

效果图:

在这里插入图片描述
若对您有帮助,请点击跳转到B站一键三连哦!感谢支持!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咬着拽天下的程序猿

心若释然,何惧万水千山!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值