首页 > 编程语言 > 详细

高大上的数组操作方法

时间:2019-03-23 10:44:48      阅读:169      评论:0      收藏:0      [点我收藏+]

1.扁平化n维数组


    [1,[2,3]].flat(2)//[1,2,3]
 
    [1,[2,3,[4,5]].flat(3)//[1,2,3,4,5]
 
    [1,[2,3,[4,5]]].toString()//‘1,2,3,4,5‘
 
    [1[2,3,[4,5[...]].flat(Infinity)//[1,2,3,4...n]
 
    Array.flat(n)是ES10扁平数组的api,n表示维度,n值为Infinity时维度为无限大
    

2.去重

        
    Array.from(new Set([1,2,3,3,4,4]))//[1,2,3,4]
 
    [...new Set([1,2,3,3,4,])]//[1,2,3,4]
 
    set是ES6新出来的一种一种定义不重复数组的数据类型
 
    Array.from是将类数组转化为数组
 
    ...是扩展运算符,将set里面的值转化为字符串

3.排序


    [ 1 , 2 , 3 , 4]. sort (( a , b )=>a-b);// [1, 2,3,4],默认是升序
 
    [1,2,3,4].sort((a,b)=>b-a);// [4,3,2,1] 降序
 
    sort是js内置的排序方法,参数为一个函数
        

4.最大值

    Math.max(...[1,2,3,4])//4
 
    Math.max.apply(this,[1,2,3,4])//4
 
    [1,2,3,4].reduce((prev,cur,curIndex,arr)=>{return Math.max(prev,cur);},0)//4
 
    Math.max()是Math对象内置的方法,参数是字符串;
 
    reduce是ES5的数组api,参数有函数和默认初始值;
 
    函数有四个参数,pre(上一次的返回值),cur(当前值),curIndex(当前值索引),arr(当前数组)

5.求和

    
    [1,2,3,4].arr.reduce(function(prev,cur){return prev+cur;},0)//10
                

6.合并

    
    [1,2,3,4].concat([5,6])//[1,2,3,4,5,6]
 
    [...[1,2,3,4],...[4,5]]//[1,2,3,4,5,6]
 
    [1,2,3,4].push.apply([1,2,3,4],[5,6])//[1,2,3,4,5,6]
        

7.判断是否包含值

    
    [1,2,3].includes(4)//false
 
    [1,2,3].indexOf(4)//-1 如果存在换回索引
 
    [1,2,3].find((item)=>item===3))//3 如果数组中无值返回undefined
 
    [1,2,3].findIndex((item)=>item===3))//2 如果数组中无值返回-1

    includes(),find(),findIndex()是ES6的api
 

8.类数组转化

    
    Array.prototype.slice.call(arguments)//arguments是类数组(伪数组)
 
    Array.prototype.slice.apply(arguments)
 
    Array.from(arguments)
 
    [...arguments] 类数组:表示有length属性,但是不具备数组的方法
 
    call,apply:是改变slice里面的this指向arguments,所以arguments也可调用数组的方法
 
    Array.from是将类似数组或可迭代对象创建为数组
 
    ...是将类数组扩展为字符串,再定义为数组
    

9.每一项设置值

    [ 1 , 2 , 3 ]. fill ( false) //[false,false,false] fill是ES6的方法

10.每一项是否满足

    
    [1,2,3].every(item=>{return item>2})//false
 
    every是ES5的api,每一项满足返回 true
    

11.有一项满足

    
    [1,2,3].some(item=>{returnitem>2})//true
 
    some是ES5的api,有一项满足返回 true
    

12.过滤数组

    
    [1,2,3].filter(item=>{returnitem>2})//[3]
 
    filter是ES5的api,返回满足添加的项的数组
    

13.对象和数组转化

    
    Object.keys({name:‘张三‘,age:14})//[‘name‘,‘age‘]
 
    Object.values({name:‘张三‘,age:14})//[‘张三‘,14]
 
    Object.entries({name:‘张三‘,age:14})//[[name,‘张三‘],[age,14]]
 
    Object.fromEntries([name,‘张三‘],[age,14])
    
    //ES10的api,Chrome不支持 , firebox输出{name:‘张三‘,age:14}

 


高大上的数组操作方法

原文:https://www.cnblogs.com/songyuhao/p/10582671.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!