JavaScript数组方法 改变原数组和不改变原数组的方法整理

以下操作会改变原数组

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

    let arr = [2,3]
    let rs = arr.pop()
    console.log(rs) //3
    console.log(arr) // [2]
    
  2. push():push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组,arrayObject.push(newelement1,newelement2,….,newelementX)

  3. shift():从数组的第一个元素从其中删除,并返回第一个元素的值,如果数组是空的,那么 shift() 方法将不进行任何操作.

    let arr = [2,3]
    let rs = arr.shift() 
    console.log(rs) //2
    console.log(arr) // [3]
    

    注意: shift()方法不接受参数,传入参数是没有任何意义和效果的。

  4. unshift():unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。arrayObject.unshift(newelement1,newelement2,….,newelementX)返回arrayObject 的新长度

    let arr = [2,3]
    let rs = arr.unshift(7, 9, 10)
    console.log(rs)  // 5
    console.log(arr)  // [ 7, 9, 10, 2, 3 ]
    
  5. reverse():该方法会改变原来的数组,而不会创建新的数组。arrayObject.reverse()

    let arr = [2,3]
    let rs = arr.reverse()
    console.log(rs) //[ 3, 2 ]
    console.log(arr) //[ 3, 2 ]
    
  6. sort():对数组的引用。请注意,数组在原数组上进行排序,不生成副本。arrayObject.sort(sortby) (如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
    如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

    注意: a < b 返回的是bool,bool只有两个值,true或false;a - b 返回的是一个数值,有三个值,-1,0,1,注意二者区别;

    function compare(a, b) {
      if (a < b ) {           // 按某种排序标准进行比较,a 小于 b
        return -1;
      }
      if (a > b ) {
        return 1;
      }
      // a must be equal to b
      return 0;
    }
    

    要比较数字而非字符串,比较函数可以简单的以 a 减 b,如下的函数将会将数组升序排列

    function compareNumbers(a, b) {
      return a - b;
    }
    
  7. splice():splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
    如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组
    arrayObject.splice(index,howmany,item1,……,itemX)

    	let arr = [2,3]
    	let rs = arr.splice(0, 1, [4,5])
    	console.log(rs)  // [2]
    	console.log(arr) //[ [ 4, 5 ], 3 ]
    

二. 以下操作不会改变原数组

  1. concat():用于连接两个或多个数组,仅会返回被连接数组的一个副本,arrayObject.concat(arrayX,arrayX,……,arrayX)

    let arr = [2,3]
    let rs = arr.concat([7, 8, 0])
    console.log(rs)     // [ 2, 3, 7, 8, 0 ]
    console.log(arr)    // [ 2, 3 ]
    
  2. join():返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,arrayObject.join(separator)

    let arr = [2,3]
    let rs = arr.join('-')
    console.log(rs)         // 2-3
    console.log(arr)        // [ 2, 3 ]
    
  3. slice():slice()方法返回一个索引和另一个索引之间的字符串。

  4. filter() 方法创建一个新的数组,新数组中的元素是通过指定数组中符合的条件筛选出来的。filter() 不会对空数组进行检测。 filter() 不会改变原始数组。

  5. reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
    语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
    在这里插入图片描述

  6. find:find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。

    const array1 = [5, 12, 8, 130, 44];
    
    const found = array1.find(element => element > 10);
    
    console.log(found);
    // expected output: 12
    
  7. findIndex: findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。

    const array1 = [5, 12, 8, 130, 44];
    
    const isLargeNumber = (element) => element > 13;
    
    console.log(array1.findIndex(isLargeNumber));
    // expected output: 3
    
  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

. . . . .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值