美文网首页
js数组降维

js数组降维

作者: 不知名的狐妖 | 来源:发表于2021-07-29 21:53 被阅读0次

数组降维

1). Array.prototype.concat.apply([],arr)

通过采用的是apply方法,自动打散参数,再concat拼接,

注释:apply() 方法接受数组形式的参数。

如果要使用数组而不是参数列表,则 apply() 方法非常方便。


let arr=[1,2,[3,4,5]]


默认只能处理二维数组降维处理


Array.prototype.concat.apply([],arr)//[1,2,3,4,5]

封装后可以进行多维数组降维处理

let recursion=function(arr){

    let len=arr.length,newarr=[];

    for(let i=0;i<len;i++){     

        if(Array.isArray(arr[i]))

            newarr.push.apply(newarr,recursion(arr[i]))

        else newarr.push(arr[i])

    }

    return newarr

}
  • 扩展
let flatten = arr => arr.reduce((begin,current)=>{

  // begin--[] 这个空数组是我们传入的

        Array.isArray(current) ? begin.push(...flatten(current)) : begin.push(current);

// 是数组在进行递归操作,否则进行push到begin中

        return begin

    },[])

  • flat

默认与上面Array.prototype.concat.apply([],arr)一样

const arr = [[1, 3, 4], [2, 3], 2, [2, [3, 5]]]

默认只能处理二维数组降维处理

arr.flat()//[1, 3, 4, 2, 3, 2, 2, [3, 5]]

flat()括号里写2扁平化处理二维数组。第三维数组不会进行扁平化处理

arr.flat(2)//[1, 3, 4, 2, 3, 2, 2, 3, 5]

// 数组扁平化 Infinity --- 不管有多少我一次性降维知道没有为止

arr.flat(Infinity)//[1, 3, 4, 2, 3, 2, 2, 3, 5]

// 扁平化、去重

new Set(arr.flat(Infinity)) //{1, 3, 4, 2, 5}

// Array.from(),对象转数组,

// 数组 扁平化、去重 

Array.from(new Set(arr.flat(Infinity))) //[1, 3, 4, 2, 5]

// 数组 扁平化、去重 、排序

Array.from(new Set(arr.flat(Infinity))).sort((a, b) => a - b) // [ 1, 2, 3, 4, 5 ]
  • 扩展 Set

    Set特点:

    1. 类似于数组,没有重复的元素(唯一的)

    2. 开发中用于去除重复数据

    3. key和value都是相等的

Set属性:size[长度]、add(支持链式添加)[添加元素]、delete(不支持链式删除)[删除元素]、has[包含元素]返回值是boolean类型;

    let a = new Set([1, 2, 3]), b = new Set([4, 5, 6, 2])



    // 并集

    console.log(new Set([...a, ...b]))// Set(6) {1, 2, 3, 4, 5, …}



    // 交集

    console.log(new Set([...a].filter(x => b.has(x))))// Set(1) {2}



    // 差集

    console.log(new Set([...a].filter(x => !b.has(x))))// Set(2) {1, 3}



  // 遍历

  let set0=new Set([1,2,5,3,4,2]) // Set(5) {1, 2, 5, 3, 4}

  set0.forEach((value,index)=>{console.log(value,index)}) // 1 1, 2 2, 5 5, 3 3, 4 4

--- end ---

相关文章

  • js数组降维

    二维数组降一维 先看代码: 推荐直接使用apply()数组中的每一个元素(还是数组,二维数组的第二维)会被作为参数...

  • js数组降维

    数组降维 1). Array.prototype.concat.apply([],arr) 通过采用的是apply...

  • 2019-08-13

    js数组降维 reduce+concat reduce(callback, initialValue),第二个参数...

  • C语言数组的升维与降维之说

    C语言数组的升维与降维之说 C语言数组的升维 C语言数组的降维

  • JS算法——数组降维

    一:二维数组 1、遍历降维 2、使用concat arr的每一个元素都是一个数组或参数,作为concat方法的参数...

  • 数组降维

    如何将二维数组降到一维数组? 一 . 我们可以利用双重循环 dimensionalityReduction即为降维...

  • 数组降维

    2019-03-07-09:46于公司 思路:数组转为字符串,然后转为数组关键点在于如何将数组转字符串!!! 比如...

  • swift 高阶函数

    1. flatMap 降纬 组成一个新的一维数组 tip:可以将二维数组转化为一维数组,如果有空值则不会降纬 2....

  • 多维数组的地址问题

    多维数组地址问题采取降维的思想,n维数组的元素为n-1维数组,n维数组名为其元素的首地址。 http://www....

  • JS数组降维--Array.prototype.concat.a

    二维数组降为一维数组 循环降维 此方法思路简单,利用双重循环遍历二维数组中的每个元素并放到新数组中。 concat...

网友评论

      本文标题:js数组降维

      本文链接:https://www.haomeiwen.com/subject/txifvltx.html