蓝桥杯前端Web赛道-收集帛书碎片

蓝桥杯前端Web赛道-收集帛书碎片

题目链接:1.收集帛书碎片 - 蓝桥云课 (lanqiao.cn)

题目要求:
在这里插入图片描述

其实通过这个目标我们可以看出其实就是筛选出数组中多余的元素,那么我们可以通过includes来判断,当前数组是否已经拥有过这个碎片,如果没有拥有过就push进去,唯一还要做的就是把每一个碎片进行遍历即可

首先我们先看题目给我们的数据长什么样

通过控制台打印出现在的数据是这个样子的,是一个二维数组

在这里插入图片描述

于是如果我们想要具体遍历到这个数组中的每一个元素就需要遍历两次,答案如下:

function collectPuzzle(...puzzles) {
  // TODO:在这里写入具体的实现逻辑
  // 对所有的拼图进行收集,获取不同拼图类型的结果,并返回
  let newArr = []
  puzzles.forEach((item)=>{
    item.forEach(res=>{
      if(!newArr.includes(res)){
        newArr.push(res)
      }
    })
  })
  return newArr
}

其实还有更简单的方法,就是使用new Set()flat() 只需要一行代码即可搞定

return [...new Set(puzzles.flat())]

...new Set() 是 ES6 中的语法,用于将 Set 对象转换为数组。Set 对象是一种集合数据结构,其中的元素是唯一的,不会重复。通过 ... 操作符,可以将 Set 对象中的元素转换为数组形式。

puzzles.flat() 是调用一个数组方法,用于将多维数组(嵌套数组)转换为一维数组。在这种情况下,由于puzzles 是一个二维数组,通过调用 flat() 方法,可以将其内部的所有元素平铺到一个新数组中。

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值