当前位置:   article > 正文

js中会改变原数组的方法及不改变原数组的方法整理_js数组方法会改变原数组

js数组方法会改变原数组

改变原数组:

1.pop():删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不 改变数组,并返回 undefined 值。arrayObject.pop()

2.push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组,arrayObject.push(newelement1,newelement2,….,newelementX)
3.reverse():将数组中元素颠倒过来,该方法会改变原来的数组,而不会创建新的数组。arrayObject.reverse()
4.shift():数组的第一个元素从其中删除,并返回第一个元素的值,如果数组是空的,那么 shift() 方法将不进行任何操作.
5.sort():对数组的引用。请注意,数组在原数组上进行排序,不生成副本。arrayObject.sort(sortby)  不传参数将不会按照数值大小排序,按照字符编码的顺序进行排序;

  1. var arr = ['General','Tom','Bob','John','Army'];
  2. var resArr = arr.sort();
  3. console.log(resArr);
  4. //输出 ["Army", "Bob", "General", "John", "Tom"]
  5. var arr2 = [30,10,111,35,1899,50,45];
  6. var resArr2 = arr2.sort();
  7. console.log(resArr2);
  8. //输出 [10, 111, 1899, 30, 35, 45, 50]

传入参数实现升序,降序;

  1. var arr3 = [30,10,111,35,1899,50,45];
  2. arr3.sort(function(a,b){ return a - b;})
  3. console.log(arr3);//输出 [10, 30, 35, 45, 50, 111, 1899]
  4. var arr4 = [30,10,111,35,1899,50,45];
  5. arr4.sort(function(a,b){ return b - a;})
  6. console.log(arr4);//输出 [1899, 111, 50, 45, 35, 30, 10]

根据数组中的对象的某个属性值排序;

  1. var arr5 = [{id:10},{id:5},{id:6},{id:9},{id:2},{id:3}];
  2. arr5.sort(function(a,b){ return a.id - b.id})
  3. console.log(arr5);
  4. //输出新的排序
  5. // {id: 2}
  6. // {id: 3}
  7. // {id: 5}
  8. // {id: 6}
  9. // {id: 9}
  10. // {id: 10}

多条件排序:根据数组中的对象的多个属性值排序,多条件排序;

  1. var arr6 = [{id:10,age:2},{id:5,age:4},{id:6,age:10},{id:9,age:6},{id:2,age:8},{id:10,age:9}];
  2. arr6.sort(function(a,b){
  3. if(a.id === b.id){
  4. //如果id相同,按照age的降序
  5. return b.age - a.age
  6. }else{
  7. return a.id - b.id
  8. }})
  9. console.log(arr6);
  10. //输出新的排序
  11. // {id: 2, age: 8}
  12. // {id: 5, age: 4}
  13. // {id: 6, age: 10}
  14. // {id: 9, age: 6}
  15. // {id: 10, age: 9}
  16. // {id: 10, age: 2}

6.splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组
arrayObject.splice(index,howmany,item1,……,itemX)
7.unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。arrayObject.unshift(newelement1,newelement2,….,newelementX)返回arrayObject 的新长度
不改变原数组:
1.concat():用于连接两个或多个数组,仅会返回被连接数组的一个副本,arrayObject.concat(arrayX,arrayX,……,arrayX)
2.jion():返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,arrayObject.join(separator)
3.slice():如果数组是空的arrayObject.slice(start,end)
4.JSON.parse(JSON.stringify(arry)):这种⽅式会重新复制⼀个数组。也是实现深拷贝的⼀种⽅式。5.toString():arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同arrayObject.toString()

6.indexOf、lastindexOf,不会改变原数组,返回查找原数组的索引

indexOf(searchValue[,fromIndex]) 查找目标字符串中,是否包含searchValue,如果包含,返回第一次出现的索引,如果不包含, 返回-1

- searchValue 要查找的值 - fromIndex 查找的起始位置,如果不

填,默认为0

7.filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。array.filter(function(currentValue,index,arr), thisValue)

8.array.reduce()接收 2 个参数:一个是函数参数,用于执行每个数组元素的函数。另一个是初始值。回调函数还接收 4 个参数:accumulator:初始值, 或者计算结束后的返回值。current:当前元素。index:当前元素的索引。arr:当前元素所属的数组对象。

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

闽ICP备14008679号