2024-04-11【技术】 使用flat() 方法来展平数组

问题:使用JavaScript,将flattened = [[0, 1,2,6], [2, 3,7], [4,3,4, 5]] 去重并重新形成一个从小到大排序的数组。

在JavaScript中,我们可以通过以下步骤来完成这个任务:

  1. 使用Array.prototype.flat()方法将嵌套的数组“扁平化”成一个一维数组。
  2. 使用Set来去除数组中的重复元素。
  3. Set转换回数组。
  4. 使用Array.prototype.sort()方法对数组进行排序。

下面是具体的实现代码:

let flattened = [[0, 1, 2, 6], [2, 3, 7], [4, 3, 4, 5]];

// 步骤1: 扁平化数组
let flatArray = flattened.flat();

// 步骤2: 使用Set去重
let uniqueElements = new Set(flatArray);

// 步骤3: 将Set转换回数组
let uniqueArray = [...uniqueElements];

// 步骤4: 对数组进行排序
uniqueArray.sort((a, b) => a - b);

console.log(uniqueArray); // 输出: [0, 1, 2, 3, 4, 5, 6, 7]

解析:

这段代码首先使用flat()方法将嵌套的数组flattened转换成一个一维数组flatArray
这里使用了 flat() 方法来展平数组,该方法默认会将所有子数组的元素与当前数组的元素合并,并返回一个新数组。如果不确定子数组的嵌套深度,可以传递 Infinity 作为 flat() 方法的参数来展平任意深度的数组:

const flatArray = flattened.flat(Infinity);

例如:
let flattened = [[1231,1231,232,[9,9,8,7,6,[01,02,04,03]]],989,231]
let flatArray = flattened.flat(Infinity);
console.log(flatArray); // [1231, 1231, 232, 9, 9, 8, 7, 6, 1, 2, 4, 3, 989, 231]

然后,它使用Set对象uniqueElements来去除flatArray中的重复元素。由于Set对象只存储唯一的值,所以这一步自动完成了去重操作。接下来,通过扩展运算符...Set对象转换回数组uniqueArray。最后,使用sort()方法根据数值大小对数组进行排序。sort()方法接受一个比较函数作为参数,这里我们提供了一个简单的函数(a, b) => a - b,它根据ab的差值来确定它们的排序顺序。

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

推荐阅读更多精彩内容