赞
踩
题目链接: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()
方法,可以将其内部的所有元素平铺到一个新数组中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。