以下操作会改变原数组
-
pop(): 删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不 改变数组,并返回 undefined 值。
let arr = [2,3] let rs = arr.pop() console.log(rs) //3 console.log(arr) // [2]
-
push():push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组,arrayObject.push(newelement1,newelement2,….,newelementX)
-
shift():从数组的第一个元素从其中删除,并返回第一个元素的值,如果数组是空的,那么 shift() 方法将不进行任何操作.
let arr = [2,3] let rs = arr.shift() console.log(rs) //2 console.log(arr) // [3]
注意: shift()方法不接受参数,传入参数是没有任何意义和效果的。
-
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 ]
-
reverse():该方法会改变原来的数组,而不会创建新的数组。arrayObject.reverse()
let arr = [2,3] let rs = arr.reverse() console.log(rs) //[ 3, 2 ] console.log(arr) //[ 3, 2 ]
-
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; }
-
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 ]
二. 以下操作不会改变原数组
-
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 ]
-
join():返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,arrayObject.join(separator)
let arr = [2,3] let rs = arr.join('-') console.log(rs) // 2-3 console.log(arr) // [ 2, 3 ]
-
slice():slice()方法返回一个索引和另一个索引之间的字符串。
-
filter() 方法创建一个新的数组,新数组中的元素是通过指定数组中符合的条件筛选出来的。filter() 不会对空数组进行检测。 filter() 不会改变原始数组。
-
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
-
find:find() 方法返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。
const array1 = [5, 12, 8, 130, 44]; const found = array1.find(element => element > 10); console.log(found); // expected output: 12
-
findIndex: findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。
const array1 = [5, 12, 8, 130, 44]; const isLargeNumber = (element) => element > 13; console.log(array1.findIndex(isLargeNumber)); // expected output: 3