js中的数组相关方法解析

    let arr = [1,2]

    /* 

    后插入

    改变原数组

    返回数组长度

     */

    let a= arr.push(3)

    console.log('push',arr,a) //[1、2、3]   3

    /* 

    前插入 

    改变原数组 

    返回数组长度

     */

    let b= arr.unshift(0)

    console.log('unshift',arr,b)//[0、1、2、3]   4

    /* 

    前删除1个 

    改变原数组 

    返回删除数据

     */

    let c= arr.shift()

    console.log('shift',arr,c)//[1、2、3]   0

    /* 

    后删除1个 

    改变原数组 

    返回删除数据

     */

    let d= arr.pop()

    console.log('pop',arr,d)//[1、2]   3

    /* 

    将数组元素转换为字符串  

    不改变原数组 

    ()传递分隔符 默认值 ,

     */

    let sJtr =arr.join(',') 

    console.log('join',arr,sJtr)//1,2

    /* 

    将数组元素转换为字符串  

    不改变原数组   

    和join不同的是分隔符是固定的 , 而join可以选择分隔符

     */

    let sStr =arr.toString()

    console.log('toString',arr,sStr)//1,2

    /* 

    截取满足条件的数据  

    不改变原数组  

    返回截取的数据  

    ()内的第一个参数是必须的,第二个是非必须的

    截取的数据范围是包含第一个参数不包含第二个参数

     */

    let brr = arr.slice(0,1) 

    console.log('slice',arr,brr)

    /* 

    向数组中添加或者删除项目   

    会改变原数组

    返回删除的项目

    ()内有多个参数 第一个是开始位置必须的  第二个是要删除的项目数量必须的,设置为0则不删除数据 后面的参数为添加的数据可选

     */

    let spArr = arr.splice(1,1) // [1] [2]

    console.log('splice',arr,spArr)

    let newArr = arr.splice(1,0,2,3) //[1,2,3] []

    console.log('splice',arr,newArr)

    /* 

    数组的拼接

    不改变原数组

    返回拼接后的新数组

    ()内可以传递多个数组

     */

    let cArr = [5,4] 

    let concatArr = arr.concat(cArr) 

    console.log('concat',arr,concatArr)//[1,2,3] [1,2,3,4,5]

    /* 

    数组的排序

    不改变原数组

    ()内传递排序规则 非必填  规则必须是函数

     */

    function sortNumber(a,b){

        return b-a

    }

    arr.sort(sortNumber)//数组排序

    console.log('sort',arr)//[3,2,1]

    /* 

    数组前后位置互换

    不改变原数组

    ()内不传递参数

     */

    arr.reverse()//数组颠倒

    console.log('reverse',arr)

    // 以下是数组迭代方法

    /* 

    循环数组中的每一项

     */

    arr.forEach(item=>{

        console.log('forEach',item)//[1,2,3]

    })

    /* 

    循环数组中每一项

    不改变原数组

    数组中没有值的元素不会执行自定义函数

    创建新数组

     */

     function aa(value, index, array) {

        return value * 2;

    }

    arr.map(item=>{

        console.log(item)//[1,2,3]

    })    

    let mapArr = arr.map(aa)

    console.log('map',arr,mapArr)//[1,2,3] [2,4,6]

    /* 

    按条件筛选

    不改变元素组

    返回满足条件的新数组

     */

    let n = arr.filter(item=>{

        return item == 1

    })

    console.log('filter',arr,n)//[1,2,3] [1]

    console.log(Math.max(...arr)) //3

    // apply的用法

    console.log(Math.max.apply(null,arr)) //3

    console.log(Math.min(...arr)) //3

    console.log(Math.min.apply(null,arr)) //3

    /* 

    查找数组中满足条件的元素(从前向后查找)

    不改变原数组

    返回满足条件的第一个下标值,如果没有返回-1

    ()内可以传递两个参数  第一个必填查找的元素  第二个非必填从数组中第几位开始查找

     */

    let Findex = arr.indexOf(2)

    console.log('Findex',Findex) //1

    /* 

    查找数组中满足条件的元素(从后向前查找)

    不改变原数组

    返回满足条件的第一个下标值,如果没有返回-1

    ()内可以传递两个参数  第一个必填查找的元素  第二个非必填从数组中第几位开始查找

     */

    let Lindex = arr.lastIndexOf(3)

    console.log('Lindex',Lindex) //2

    /* 

    对数组中的所有元素进行判断,是否所有的元素都满足判断条件

    不改变原数组

    返回一个布尔值

    ()内传递的是一个函数

    */

    function greater(value, index, array){

        return value > 1;

    }

    let eFlag = arr.every(greater)

    let eFlag1 = arr.every(i =>{return i>1})

    console.log('every',eFlag,eFlag1) //false false

    /* 

    对数组中的所有元素进行判断,是否存在一个满足条件判断的元素

    不改变原数组

    返回一个布尔值

    ()内传递的是一个函数

    */

    let sFlag = arr.some(greater)

    let sFlag1 = arr.some(i =>{return i>1})

    console.log('some',sFlag,sFlag1) //true true

    /* 

     */

    // arr.reduce()

    // arr.reduceRight()

    // // es6新增实用方法

    /* 

    扩展运算符

    不改变原数组  

    返回新数组

    注意:只有函数调用时,扩展运算符才可以放在圆括号中,否则会报错。

    优点太多,待完善

     */

    let dArr = [0,...arr]

    console.log(arr,dArr)//[1,2,3] [0,1,2,3]

    // console.log((...[1,2]))  //Uncaught SyntaxError: Unexpected number

    /* 

    将一组数值转换为数组

    返回一个新数组

     */

    let ofArr = Array.of(1,2,3,4)

    console.log(ofArr)//[1,2,3,4] 

    /* 

    查找数组中满足条件的第一个元素

    不改变原数组

    */

    let fNumber = arr.find(greater)

    console.log('find',fNumber)//2

    /* 

    查找数组中满足条件的第一个元素的下标值

    不改变原数组

    */

    let findex = arr.findIndex(greater)

    console.log('findIndex',findex)//1

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350