改变原数组的方法
- pop():删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不 改变数组,并返回 undefined 值。arrayObject.pop()
- push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组,返回当前别修改的原数组的长度arrayObject.push(newelement1,newelement2,….,newelementX) 。
- reverse()该方法会改变原来的数组----将原来的数组倒序,而不会创建新的数组。arrayObject.reverse()。
- shift():数组的第一个元素从其中删除,并返回第一个元素的值,如果数组是空的,那么 shift() 方法将不进行任何操作,如果是一个空数组,返回undefined,如果不是,则返回被删除的元素
- unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。arrayObject.unshift(newelement1,newelement2,….,newelementX)返回arrayObject 的新长度
- 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 的位置不变
- 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)
- reverse(),将数组中元素颠倒过来。返回一个新的数组,会改变原有的数组。
var arr = ['a','b','c'];
console.log(arr.reverse());
console.log(arr);
不改变原数组的方法
- concat():用于连接两个或多个数组,仅会返回被连接数组的一个副本,arrayObject.concat(arrayX,arrayX,……,arrayX)
- join():返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,arrayObject.join(separator)
- 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是不包含在截取范围内
- toString():arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同arrayObject.toString()
- 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
- array.reduce(function(total, currentValue, currentIndex, arr), initialValue) reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
- filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。array.filter(function(currentValue,index,arr), thisValue)
- JSON.parse(JSON.stringify()),深度拷贝,也不会改变原数组。
其他数组的方法
- arr.forEach(callback[,thisArg])
对数组中的每一个元素,执行一次提供的函数
- callback(ele) 函数
- ele :循环过程中的每一位元素
- index: 当前循环的元素对应的下标值
- arr :调用forEach的当前数组
- thisArg: 控制当前callback中的this指向
该方法返回值是undefined
- 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接受
- some(callback[,thisAry])
测试数组中是否至少有一个元素通过了指定函数的测试,结果返回布尔值
- callback 用于测试的函数
- ele:数组循环中的元素
- index:元素对应下标
- array:当前正在操作的数组
- thisAry:决定callback中的this指向
- every(callback[,thisAry])
测试数组中所有元素都通过了指定函数的测试,结果返回布尔值
总是被会不会改变原数组困扰,记录一下,希望也可以帮助到大家