一、新增
1影响原数组
arr.push()//返回新增之后的新数组,原数组arr被改变
arr.ushift()//返回新增之后的新数组,原数组arr被改变
2不影响原数组
arr.concat("f")<---->arr.concat(['a','b','c'])//返回新数组,原数组arr不被改变
[...arr,'f']//(展开操作符)返回新数组,原数组arr不被改变
二、移除
1影响原数组
arr.pop()//返回被删除的元素,原数组arr被改变
arr.shift()//返回被删除的元素,原数组arr被改变
arr.splice(startIndex,sum)//返回被删除的元素,原数组arr被改变
2不影响原数组
//当函数体只有一行的时候,‘return’关键字是默认自带的,不需要手动输入
//当函数体为多行时,需要手动输入手动输入
//arr.filter() ES6语法,筛选
arr.filter(a=>a!=='e')<----->arr.filter(a=>{return a!=='e'})//不影响原数组arr
arr.slice(startIndex,endIndex)//不影响原数组arr
三、替换
1影响原数组
arr.splice(替换开始标,被替换个数,替换的值可多个);
arr.splice(2,1,'a','v')//原数组arr被改变
2不影响原数组
arr.map(n=>n+'h');//原数组arr不被影响
例:
const origArr = ['a', 'b', 'c', 'd', 'e'];
const transformedArr = origArr.map(n => n + 'Hi!'); // ['aHi!', 'bHi!', 'cHi!', 'dHi!', 'eHi!']
console.log(origArr); // ['a', 'b', 'c', 'd', 'e']; // 原数组毫发无损