js数组常用的方法
1. Array.prototype.push(),向数组的末尾添加一个或多个元素,并返回新的数组长度。原数组改变。
var arr = [1,2,3,4]
arr.push(5,6,7)
console.log(arr) // [1, 2, 3, 4, 5, 6, 7]
2. Array.prototype.pop(),删除并返回数组的最后一个元素,若该数组为空,则返回undefined。原数组改变。
var arr = [1,2,3,4,5,6,7]
var del = arr.pop()
console.log(del) // 7
console.log(arr) // [1, 2, 3, 4, 5, 6]
3. Array.prototype.unshift(),向数组的开头添加一个或多个元素,并返回新的数组长度。原数组改变。
var arr = [1,2,3,4,5,6,7]
var res = arr.unshift(0)
console.log(res) // 8
console.log(arr) //[0,1,2,3,4,5,6,7]
4. Array.prototype.shift(),删除数组的第一项,并返回第一个元素的值。若该数组为空,则返回undefined。原数组改变。
var arr = [1,2,3,4,5,6,7]
var res = arr.shift()
console.log(res) // 1
console.log(arr) // [2, 3, 4, 5, 6, 7]
5. Array.prototype.concat(arr1,arr2...),合并两个或多个数组,生成一个新的数组。原数组不变。
var arr = [1,2,3,4,5,6,7]
var arr1 = ['a','b','c']
var arr2 = ['x','y','z']
var res = arr.concat(arr1,arr2)
console.log(res) // [1, 2, 3, 4, 5, 6, 7, "a", "b", "c", "x", "y", "z"]
console.log(arr) // [1, 2, 3, 4, 5, 6, 7]
6. Array.prototype.join(),将数组的每一项用指定字符连接形成一个字符串。默认连接字符为 “,” 逗号。
var arr = [1,2,3,4,5,6,7]
var str1 = arr.join()
var str2 = arr.join('-')
console.log(str1) // 1,2,3,4,5,6,7
console.log(str2) // 1-2-3-4-5-6-7
7. Array.prototype.reverse(),方法将数组中元素的位置颠倒,并返回该数组。该方法会改变原数组。
var arr = [1,2,3,4,5,6,7]
arr.reverse()
console.log(arr) // [7, 6, 5, 4, 3, 2, 1]
8. Array.prototype.sort(),对数组元素进行排序。按照字符串UniCode码排序,原数组改变。
①从小到大
var sortNum = function(a,b){
return a-b
}
arr.sort(sortNum)
②从大到小
var sortNum = function(a,b){
return b-a
}
arr.sort(sortNum)
③按照数组对象中的某个值进行排序
var arr = [
{name:"张三",age:18},
{name:"李四",age:16},
{name:"王五",age:20}
]
function compare(param){
return function sortAge(a,b){
return a[param] - b[param]
}
}
arr.sort(compare("age"))
9. Array.prototype.map(function),原数组的每一项执行函数后,返回一个新的数组。原数组不变。
(注意该方法和forEach的区别)。
10. Array.prototype.slice(start,end),从start开始,end之前结束,不到end;如果不给end值,从start开始到数组结束。start可以给负值,-1表示数组最后位置,-2表示倒数第二个,以此类推,顾前不顾后。返回一个新数组,原数组不变。
var arr = [1,2,3,4]
var a = arr.slice(-3,-1)
console.log(a) // [2,3]
11. Array.prototype.splice(index,howmany,arr1,arr2...),删除元素并添加元素,从index位置开始删除howmany个元素,并将arr1、arr2...数据从index位置依次插入。howmany为0时,则不删除元素。原数组改变。
12. Array.prototype.forEach(function),用于调用数组的每个元素,并将元素传递给回调函数。原数组不变。
(注意该方法和map的区别,若直接打印Array.forEach,结果为undefined)。
13. Array.prototype.filter(function),过滤数组中,符合条件的元素并返回一个新的数组, 原数组不变
var arr = [1,2,3,4,5]
var newArr = arr.filter( x => x>3 ) //[4,5]
14. Array.prototype.every(function),对数组中的每一项进行判断,若都符合则返回true,否则返回false。
15. Array.prototype.some(function),对数组中的每一项进行判断,若都不符合则返回false,否则返回true。
16. Array.prototype.reduce(function),reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
var arr = [1,2,3,4,5]
var total = arr.reduce((a,b) => a+b)
17. Array.prototype.includes(searchElement, fromIndex),includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。fromIndex可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。如果计算出的array.length + fromIndex小于 0,则整个数组都会被搜索。默认为 0。