当前位置:   article > 正文

JS中数组方法(分为不改变原来数组的方法和会改变原来数组的方法)_js对数组排序但不改变原数组

js对数组排序但不改变原数组

1. 会改变数组的方法(常见的7个)

分别是:push后添加,pop后删除,unshift前添加,shift前删除,sort排序,reverse反转,splice部分替换

  • push后添加
  1. // push(若干个往后添加的值),返回值是添加后数组的长度
  2. var arr=[1,2]
  3. console.log(arr.push(9,10));//4
  4. console.log(arr);//[ 1,2,9,10 ]
  • pop后删除
  1. // pop(无参数),删除并返回最后一个值
  2. var arr=[1,2,3,4]
  3. console.log(arr.pop());//4
  4. console.log(arr)//[1,2,3]
  • unshift前添加
  1. //unshift(若干个往前添加的值),返回值是添加后数组的长度
  2. var arr=[1,2,3,4]
  3. console.log(arr.unshift(-2,-1,0));//7
  4. console.log(arr)//[-2,-1,0,1,2,3,4]
  • shift前删除
  1. //shift(无参数),删除并返回第一个值
  2. var arr=[1,2,3,4]
  3. console.log(arr.shift());// 1
  4. console.log(arr)//[2,3,4]
  • sort排序(有很多用法,并不只是简单的排序)
  1. //sort(参数可有可无),返回正序排序结果
  2. var arr=["c","d","a","b"]
  3. console.log(arr.sort());// [ 'a', 'b', 'c', 'd' ]
  4. console.log(arr)// [ 'a', 'b', 'c', 'd' ]
  • reverse反转
  1. //reverse(无参数),返回反转结果
  2. var arr= [ 'a', 'b', 'c', 'd' ]
  3. console.log(arr.reverse());// [ 'd', 'c', 'b', 'a' ]
  4. console.log(arr)// [ 'd', 'c', 'b', 'a' ]
  • splice部分替换
  1. //splice(start,end(可有可无),替换的若干个值(可有可无,且需要有end)),返回被替换的几个值
  2. var arr= [ 'a', 'b', 'c', 'd' ,'e']
  3. console.log(arr.splice(1,3, 9,9,9));// [ 'b', 'c', 'd' ]
  4. console.log(arr)// [ 'a', 9, 9, 9, 'e' ]

2.会改变数组的方法(常见的11个)

分别是:concat合并,join字符连接,slice截取,forEach遍历,map映射遍历,reduce叠加遍历,filter遍历筛选,every遍历判断,some遍历判断,indexOf查询索引,lastIndexOf反向查询索引

  • concat合并
  1. //concat(若干个数组或者数字或者字符),返回被替换的几个值
  2. var arr= [ 'a', 'b', 'c']
  3. console.log(arr.concat([1,2,3],6,["D","D"],"小明"));// ['a','b','c', 1,2,3, 6, 'D','D', '小明']
  4. console.log(arr)// [ 'a', 'b', 'c']
  • join字符连接
  1. //slice(start,end(可有可无)),返回截取的几个值,注意这个是包前不包后的
  2. var arr= ['a','b','c',1,2,3]
  3. console.log(arr.slice(1,5));// [ 'b', 'c', 1, 2 ]
  4. console.log(arr)// [ 'a', 'b', 'c', 1, 2, 3 ]
  • slice截取
  1. //slice(start,end(可有可无)),返回截取的几个值,注意这个是包前不包后的
  2. var arr= ['a','b','c',1,2,3]
  3. console.log(arr.slice(1,5));// [ 'b', 'c', 1, 2 ]
  4. console.log(arr)// [ 'a', 'b', 'c', 1, 2, 3 ]
  • forEach遍历
  1. //forEach((值,索引,原数组)=>{}),不能用,break和continue
  2. var arr= ['a','b','c',1,2,3]
  3. arr.forEach((value,index,a)=>{console.log(value,index,a);})
  4. //打印如下:
  5. // a 0 [ 'a', 'b', 'c', 1, 2, 3 ]
  6. // b 1 [ 'a', 'b', 'c', 1, 2, 3 ]

但是,forEach不能使用break和continue,如果硬是需要达到循环中退出的形式,你可以使用抛出错误并接收的形式,如下

  1. //forEach((值,索引(可写可不写),原数组(可写可不写))=>{}),不能用break和continue
  2. var arr= ['a','b','c',1,2,3]
  3. try {
  4. arr.forEach((value,index,a)=>{
  5. console.log(value,index,a);
  6. if(index===1) throw Error("ddd")
  7. })
  8. } catch (error) {}
  • map映射遍历
  1. //map((值,索引(可写可不写),原数组(可写可不写))=>{}),不能用break和continue,返回映射结果var arr= ['a','b','c',1,2,3]
  2. var b=arr.map((value,index,a)=>{return value+"iii"})
  3. console.log(b);//[ 'aiii', 'biii', 'ciii', '1iii', '2iii', '3iii' ]
  4. console.log(arr);//[ 'a', 'b', 'c', 1, 2, 3 ]
  • reduce叠加遍历
  1. //reduce((之前的值,值,索引(可写可不写),原数组(可写可不写))=>{}),返回连续操作的结果,不能用break和continue
  2. //如下,实现一个简单的连乘
  3. var arr= [1,2,3]
  4. var b=arr.reduce((pre_value,value,index,a)=>{return pre_value*value})
  5. console.log(b);//6
  6. console.log(arr);//[ 1, 2, 3 ]
  • filter遍历筛选
  1. //filter((值,索引(可写可不写),原数组(可写可不写))=>{}),返回符合条件的值组成的数组,不能用break和continue
  2. var arr= [1,2,3,4,5,5]
  3. var b=arr.filter((value,index,a)=>{return value>=3})
  4. console.log(b);//[ 3, 4, 5, 5 ]
  5. console.log(arr);//[ 1, 2, 3, 4, 5, 5 ]
  • every遍历判断
  1. //every((值,索引(可写可不写),原数组(可写可不写))=>{}),全部满足条件返回true否则false,不能用break和continue
  2. var arr= [1,2,3]
  3. var b=arr.every((value,index,a)=>{return value>=1})
  4. console.log(b);//true
  5. console.log(arr);//[ 1, 2, 3 ]
  • some遍历判断
  1. //some((值,索引(可写可不写),原数组(可写可不写))=>{}),一个或多个满足条件返回true否则false,不能用break和continue
  2. var arr= [1,2,3]
  3. var b=arr.some((value,index,a)=>{return value>=3})
  4. console.log(b);//true
  5. console.log(arr);//[ 1, 2, 3 ]
  • indexOf查询索引
  1. //indexOf(查找值,start(可写可不写))=>{}),返回查找到的第一个值的索引
  2. var arr= [0,1,2,3,1]
  3. var b=arr.indexOf(1,3)//从索引为3的地方开始查找到,包括索引为3的值
  4. console.log(b);//4
  5. console.log(arr);//[ 0, 1, 2, 3, 1 ]
  • lastIndexOf反向查询索引

与indexOf类似,但是反方向查找

3. 所有代码

  1. // push(若干个往后添加的值),返回值是添加后数组的长度
  2. // var arr=[1,2]
  3. // console.log(arr.push(9,10));//4
  4. // console.log(arr);//[ 1,2,9,10 ]
  5. // pop(无参数),删除并返回最后一个值
  6. // var arr=[1,2,3,4]
  7. // console.log(arr.pop());//4
  8. // console.log(arr)//[1,2,3]
  9. //unshift(若干个往前添加的值),返回值是添加后数组的长度
  10. // var arr=[1,2,3,4]
  11. // console.log(arr.unshift(-2,-1,0));//7
  12. // console.log(arr)//[-2,-1,0,1,2,3,4]
  13. //shift(无参数),删除并返回第一个值
  14. // var arr=[1,2,3,4]
  15. // console.log(arr.shift());// 1
  16. // console.log(arr)//[2,3,4]
  17. //sort(参数可有可无),返回正序排序结果
  18. // var arr=["c","d","a","b"]
  19. // console.log(arr.sort());// [ 'a', 'b', 'c', 'd' ]
  20. // console.log(arr)// [ 'a', 'b', 'c', 'd' ]
  21. // //reverse(无参数),返回反转结果
  22. // var arr= [ 'a', 'b', 'c', 'd' ]
  23. // console.log(arr.reverse());// [ 'd', 'c', 'b', 'a' ]
  24. // console.log(arr)// [ 'd', 'c', 'b', 'a' ]
  25. //splice(start,end(可有可无),替换的若干个值(可有可无,且需要有end)),返回被替换的几个值
  26. // var arr= [ 'a', 'b', 'c', 'd' ,'e']
  27. // console.log(arr.splice(1,3, 9,9,9));// [ 'b', 'c', 'd' ]
  28. // console.log(arr)// [ 'a', 9, 9, 9, 'e' ]
  29. //concat(若干个数组或者数字或者字符),返回被替换的几个值
  30. // var arr= [ 'a', 'b', 'c']
  31. // console.log(arr.concat([1,2,3],6,["D","D"],"小明"));// ['a','b','c', 1,2,3, 6, 'D','D', '小明']
  32. // console.log(arr)// [ 'a', 'b', 'c']
  33. //join(连接的字符串),返回被替换的几个值
  34. // var arr= ['a','b','c',1,2,3]
  35. // console.log(arr.join("--"));// a--b--c--1--2--3
  36. // console.log(arr)// [ 'a', 'b', 'c', 1, 2, 3 ]
  37. //slice(start,end(可有可无)),返回截取的几个值,注意这个是包前不包后的
  38. // var arr= ['a','b','c',1,2,3]
  39. // console.log(arr.slice(1,5));// [ 'b', 'c', 1, 2 ]
  40. // console.log(arr)// [ 'a', 'b', 'c', 1, 2, 3 ]
  41. //forEach((值,索引(可写可不写),原数组(可写可不写))=>{}),不能用break和continue
  42. // var arr= ['a','b','c',1,2,3]
  43. // arr.forEach((value,index,a)=>{console.log(value);})//分行打印a b c 1 2 3
  44. // console.log(arr);//[ 'a', 'b', 'c', 1, 2, 3 ]
  45. //map((值,索引(可写可不写),原数组(可写可不写))=>{}),不能用break和continue,返回映射结果
  46. // var arr= ['a','b','c',1,2,3]
  47. // var b=arr.map((value,index,a)=>{return value+"iii"})
  48. // console.log(b);//[ 'aiii', 'biii', 'ciii', '1iii', '2iii', '3iii' ]
  49. // console.log(arr);//[ 'a', 'b', 'c', 1, 2, 3 ]
  50. //reduce((之前的值,值,索引(可写可不写),原数组(可写可不写))=>{}),返回连续操作的结果,不能用break和continue
  51. //如下,实现一个简单的连乘
  52. // var arr= [1,2,3]
  53. // var b=arr.reduce((pre_value,value,index,a)=>{return pre_value*value})
  54. // console.log(b);//6
  55. // console.log(arr);//[ 1, 2, 3 ]
  56. //filter((值,索引(可写可不写),原数组(可写可不写))=>{}),返回符合条件的值组成的数组,不能用break和continue
  57. // var arr= [1,2,3,4,5,5]
  58. // var b=arr.filter((value,index,a)=>{return value>=3})
  59. // console.log(b);//[ 3, 4, 5, 5 ]
  60. // console.log(arr);//[ 1, 2, 3, 4, 5, 5 ]
  61. //some((值,索引(可写可不写),原数组(可写可不写))=>{}),一个或多个满足条件返回true否则false,不能用break和continue
  62. // var arr= [1,2,3]
  63. // var b=arr.some((value,index,a)=>{return value>=3})
  64. // console.log(b);//true
  65. // console.log(arr);//[ 1, 2, 3 ]
  66. //indexOf(查找值,start(可写可不写))=>{}),返回查找到的第一个值的索引
  67. var arr= [0,1,2,3,1]
  68. var b=arr.indexOf(1,3)//从索引为3的地方开始查找到,包括索引为3的值
  69. console.log(b);//4
  70. console.log(arr);//[ 0, 1, 2, 3, 1 ]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/915180
推荐阅读
相关标签
  

闽ICP备14008679号