资讯专栏INFORMATION COLUMN

数组扁平化并去重排序

104828720 / 716人阅读

摘要:题目相关知识去除字符串里面的重复字符。该运算符将一个数组,变为参数序列。展平数组的方法只能展平一层默认为。如果原数组有空位,方法会跳过空位。展平后每个数组中的至是字符串,可根据需要再转换参考文章

题目

var arr=[ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];

1 .

Array.from(new Set(arr.flat(Infinity))).sort((a,b)=>{ return a-b})

2 .

function flatten(arr) {
    while (arr.some(item => Array.isArray(item))) {
        arr = [].concat(...arr);
    }
    return arr;
}
Array.from(new Set(flatten(arr))).sort((a, b) => {
 return a - b
})

3.

Array.from(new Set(arr.toString().split(",").map((v)=>{return parseInt(v,10)}))).sort((a,b)=>{ return a-b})
相关知识 Set
[...new Set("ababbc")].join("")
// "abc"  去除字符串里面的重复字符。
const set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]
...
console.log(...[1, 2, 3])   //1 2 3
console.log([1, 2, 3])   // [1, 2, 3]

该运算符将一个数组,变为参数序列。

展平数组的方法 1.contact

只能展平一层

[1,2,3].concat([4,5,6],[7,8,9]) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
["a","b","c"].concat(1,[2,3],[[4,5]]) // ["a", "b", "c", 1, 2, 3, [4,5]]

2. flat
[1, 2, [3, 4]].flat()
// [1, 2, 3, 4]
[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]  默认为1。

[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]
[1, [2, [3]]].flat(Infinity)
// [1, 2, 3] 
// 如果不管有多少层嵌套,都要转成一维数组,可以用`Infinity`关键字作为参数。
[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]   如果原数组有空位,`flat()`方法会跳过空位。
3.toString()

toString()展平后每个数组中的至是字符串,可根据需要再转换

var arr=[ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
arr.toString();

参考文章

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/106604.html

相关文章

  • 使用流

    摘要:将在非空的时候返回值,否则会抛出没有这个元素的异常。构建流现在我们已经能够使用从集合生成流了。由文件生成流不重复的单词数预处理获取流,使用后不用手动关闭流。我们使用得到流,其中每个元素就是文本里的一行。 筛选和切片 filter filter 会接受一个谓词作为参数,并返回符合该条件的元素流。 List vegetarianMenu = menu ...

    codercao 评论0 收藏0
  • JS专题之数组展开

    摘要:根据需求的特点,数组展开需要进行迭代和递归。回答文章开头的问题将多重数组转化成单层数组的过程就是数组展开,也叫作数组扁平化一循环加递归最简单的思路循环中判断,如果子元素是数组则递归。 前言 首先什么是数组展开? 假如现在有这样一个需求:将后台的一个多重 List 数据,展开成一个 List 后,并去重后排序; [a, b, [c, d], [[d],e], f] => [a, b, ...

    boredream 评论0 收藏0
  • 深入理解Java内存模型(六)——final

    摘要:对于域,编译器和处理器要遵守两个重排序规则在构造函数内对一个域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。这个屏障禁止处理器把域的写重排序到构造函数之外。下一篇深入理解内存模型七总结 与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个fi...

    lixiang 评论0 收藏0
  • js 数组重排

    摘要:前段时间遇到的一个算法题,将上面的数组去重排序先转换成字符串根据逗号分割再转换成一个数组的语法去重将数组的字符串转换成数字 前段时间遇到的一个算法题, var arr = [1,2,4,3,4,3,[12,2,4,5],[1,3,5,[234,432,5,3,2,5]]] 将上面的数组去重排序 let str = arr.toString() //先转换成字符串 l...

    gekylin 评论0 收藏0
  • JMM——Java内存模型

    摘要:讲什么内存模型描述了多个线程之间通过内存交互的规范,屏蔽了各种硬件和操作系统的访问差异的,保证了程序在各种平台下对内存的访问都能保证效果一致。这个版本的内存模型在中仍然在使用。 JMM讲什么 内存模型(Memory Model)描述了多个线程之间通过内存交互的规范,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致。在现代的多处理器(多核处...

    keithyau 评论0 收藏0

发表评论

0条评论

104828720

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<