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() 方法将不进行任何操作,如果是一个空数组,返回undefined,如果不是,则返回被删除的元素
  5. unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。arrayObject.unshift(newelement1,newelement2,….,newelementX)返回arrayObject 的新长度
  6. sort()
    对数组的引用。请注意,数组在原数组上进行排序,不生成副本。arrayObject.sort(sortby) (如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
    如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
      若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    若 a 等于 b,则返回 0。
    若 a 大于 b,则返回一个大于 0 的值.
- 如果说不提供任何的参数,则根据默认规则来进行排序(根据unicode来进行排序)
   - 如果提供参数(函数),我们可以指定排序的规则
       a 和 b代表两个在比较的值      
       如果 a-b 的结果
       ​	大于0 :b 排到 a 前面
       ​	小于0:a 排到 b 前面
       ​	等于0:a 和 b 的位置不变
  1. sp在这里插入代码片lice()方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
- splice(start[,num,item1,item2...])
- start:删除的起始位置
         如果start大于length,就是不删除。
         如果是一个负数(负数的绝对值超过了length,则起始位置被设定为length),
         从右到左查找对应的起始位置length + (start)
- num:可选,默认删除到数组的末尾。表示删除的个数
      如果小于0,或者是NaN,则当做0进行处理,不删除任何元素
- item1,item2... 从删除的位置,添加第二个参数以后的内容
返回值是所有删除的元素,组成的数组,如果没有删除任何元素,将会得到一个空数组
如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组
arrayObject.splice(index,howmany,item1,..,itemX)
  1. reverse(),将数组中元素颠倒过来。返回一个新的数组,会改变原有的数组。
var arr = ['a','b','c'];
    console.log(arr.reverse());
    console.log(arr);

不改变原数组的方法

  1. concat():用于连接两个或多个数组,仅会返回被连接数组的一个副本,arrayObject.concat(arrayX,arrayX,……,arrayX)
  2. join():返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,arrayObject.join(separator)
  3. slice():如果数组是空的arrayObject.slice(start,end) 方法可从已有的数组中返回选定的元素。Slice(1)表示slice(1,末尾)
slice(begin,end)
用于截取数组中的内容,返回一个新数组
- begin
    - 如果不给,默认为0
    - 截取的起始位置
    - 如果值超过了length,就会返回一个空数组给你
    - 如果是一个负数(负数的绝对值超过了length,就会默认从0开始截取),
    - 那就说明从倒数第begin开始截取length + begin
- end
	- 如果不给,默认到数组结尾
	- 控制截取的结束位置
	- 如果小于(从位置上来说)bengin,会得到一个空字符串
	- 如果是负数(如果负数的绝对值超过了length,那么就会得到一个空字符串),
	- 那么就说明从倒数第end个结束。
	- 如果超过了length,默认也只到数组的结尾位置
	begin是包含在内的,end是不包含在截取范围内
  1. toString():arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同arrayObject.toString()
  2. indexOf、lastindexOf,不会改变原数组,返回查找原数组的索引
indexOf(searchValue[,fromIndex])
查找目标字符串中,是否包含searchValue,如果包含,返回第一次出现的索引,如果不包含,
返回-1
- searchValue 要查找的值
- fromIndex 查找的起始位置,如果不填,默认为0
  如果大于或者等于length,则返回-1
  如果说是一个负数(如果这个负数的绝对值超过length,则fromIndex为0),
  根据倒数来确认查找的位置
length + fromIndex
lastIndexOf(searchValue[,fromIndex])
返回数组中指定的值最后一次出现的位置,如果不存在,则返回-1
 fromIndex 
     搜索的起始位置,默认为length
     如果大于或者等于length,则为length
     如果是一个负数,则倒数找到对应的起始位置
     length - fromIndex
     如果负数的绝对值大于length,则返回 -1
  1. array.reduce(function(total, currentValue, currentIndex, arr), initialValue) reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
  2. filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。array.filter(function(currentValue,index,arr), thisValue)
  3. JSON.parse(JSON.stringify()),深度拷贝,也不会改变原数组。

其他数组的方法

  1. arr.forEach(callback[,thisArg])
    对数组中的每一个元素,执行一次提供的函数

- callback(ele)  函数
- ele :循环过程中的每一位元素
- index: 当前循环的元素对应的下标值
- arr :调用forEach的当前数组
- thisArg: 控制当前callback中的this指向

该方法返回值是undefined
  1. arr.reduce(callback[,initValue])
对数组中的每一个元素执行callback函数,将结果根据callback函数中的条件,返回单个值。
- callback :执行的函数
   - result 结果
   - ele :当前正在循环的元素
   - index :当前正在循环的元素对应的索引值

- initValue 可选。对于result进行初始化;
10 20 1
undefined 4 2
undefined 50 3
undefined 60 4
undefined 75 5
undefined 3 6

undefined的出现是因为我们没有把结果return给result接受
  1. some(callback[,thisAry])
测试数组中是否至少有一个元素通过了指定函数的测试,结果返回布尔值
- callback 用于测试的函数
    - ele:数组循环中的元素
    - index:元素对应下标
    - array:当前正在操作的数组
- thisAry:决定callback中的this指向
  1. every(callback[,thisAry])
    测试数组中所有元素都通过了指定函数的测试,结果返回布尔值

总是被会不会改变原数组困扰,记录一下,希望也可以帮助到大家

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值