- Published on
JavaScript数组方法总结
- Authors
- Name
- 谢克成
数组方法
splice
对数组进行增、删、改。通常用于删除数组中的元素,返回所有被删除元素组成的数组
语法:
数组.splice(开始下标,删除的个数[,在删除位置上要添加的元素们])
例:
var arr = ['a', 'b', 'c']
// 增
// arr.splice(1,0,'d','e')
// 改
// arr.splice(1,1,'d')
// 删
arr.splice(1, 2)
console.log(arr)
push/pop/shift/unshift
push:给数组的末尾添加一个或多个元素,返回新数组长度
语法:
数组.push(元素1[,元素2,....])
例:
var ele = arr.push('d', 'e')
console.log(ele)
pop:将数组的最后一个元素删除,返回被删除的元素
语法:
数组.pop()
例:
var ele = arr.pop()
console.log(ele, arr) // c ["a", "b"]
shift:删除数组第一个元素,返回被删除的元素
语法:
数组.shift()
例:
var ele = arr.shift()
console.log(arr, ele) // ["b", "c"] "a"
unshift:给数组的开头添加一个或多个元素,返回数组长度
语法:
数组.unshift(元素1[,元素2,....])
例:
var ele = arr.unshift('d', 'e')
console.log(ele, arr) // 5 ["d", "e", "a", "b", "c"]
sort
对数组做排序
语法:
数组.sort([
function (a, b) {
return a - b / b - a
},
])
例:
var arr = [1, 5, 9, 3, 7, 4, 6, 8, 2]
// var ele = arr.sort()
// console.log(arr,ele); // [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr.sort(function (a, b) {
// return a-b // 升序
return b - a // 降序
})
console.log(arr)
var arr = [
{
name: '张三',
age: 12,
sex: '男',
},
{
name: '李四',
age: 10,
sex: '女',
},
{
name: '王五',
age: 15,
sex: '男',
},
]
arr.sort(function (a, b) {
return b.age - a.age
})
console.log(arr)
reverse
翻转数组,头尾倒置
语法:
数组.reverse()
例:
var arr = [
{
name: '张三',
age: 12,
sex: '男',
},
{
name: '李四',
age: 10,
sex: '女',
},
{
name: '王五',
age: 15,
sex: '男',
},
]
arr.reverse()
console.log(arr)
concat
合并数组,将 1 个或多个数组或 1 个或多个元素跟当前数组合并成一个更大的数组并返回
语法:
var arr = 数组.concat(数组[,数组,...])
var arr = 数组.concat(元素[元素,...])
var arr = 数组.concat(元素[数组,...])
例:
var arr = ['a', 'b', 'c']
var brr = ['d', 'e', 'f']
var crr = ['h', 'i', 'j']
// var drr = arr.concat(brr,crr)
var drr = arr.concat(brr, '1', '2', '3')
console.log(drr)
slice
截取数组,从一个数组中截取一段,不包含结束下标的元素
语法:
数组.slice(开始下标[,结束下标])
例:
var arr = ['a', 'b', 'c', 'd', 'e', 'f']
var brr = arr.slice(2)
console.log(brr) // ["c", "d", "e", "f"]
var crr = arr.slice(2, 4)
console.log(crr) // ["c", "d"]
join
将数组所有元素通过指定的连接符,连成一个字符串
语法:
数组.join([连接符])
例:
// var str = arr.join() // a,b,c,d,e,f
var str = arr.join('--') // a--b--c--d--e--f
console.log(str)
indexOf
找一个元素在数组中第一次出现的下标
语法:
数组.indexOf(元素[开始查找的下标])
例:
var arr = ['a', 'b', 'c', 'a', 'a', 'd']
var index1 = arr.indexOf('a')
console.log(index1) // 0
var index2 = arr.indexOf('a', 1)
console.log(index2) // 3
forEach
遍历数组 - 没有返回值,类似于 for 循环遍历
语法:
数组.forEach(function(v[,i,a]){
// v是遍历出的每个元素
// i是每个v对应的下标
// a当前正在遍历的数组
})
例:
map
数组每个元素都被回调函数处理,返回每一个处理过的新元素,所有新元素组成一个新数组返回
语法:
var arr = 数组.map(function(v[,i,a]){
// v是遍历出的每个元素
// i是每个v对应的下标
// a当前正在遍历的数组
return 新元素
})
例:
var arr = [
{
name: '张三',
age: 12,
sex: '男',
},
{
name: '李四',
age: 10,
sex: '女',
},
{
name: '王五',
age: 15,
sex: '男',
},
]
var brr = arr.map(function (v) {
return v.name // ["张三", "李四", "王五"]
// return v.age + 20 // [32, 30, 35]
})
console.log(brr)
filter
将数组中满足指定条件的所有元素组成一个新数组返回
语法:
var arr = 数组.filter(function(v[,i,a]){
// v是遍历出的每个元素
// i是每个v对应的下标
// a当前正在遍历的数组
return 条件
})
例:
var arr = [20, 50, 90, 60, 30, 70, 15]
var brr = arr.filter(function (v) {
return v < 60 // [20, 50, 30, 15]
})
console.log(brr)
reduce
归并 - 通常利用这个方法求数组元素的和
语法:
var res = arr.reduce(function (prev, next) {
// prev第一次代表第一个元素,next第一次代表第二个元素
// prev第二次开始,代表上一次返回的值,next第二个代表第三个元素,第三次代表第四个元素 ...
})
例:
var sum = arr.reduce(function (prev, next) {
return prev + next
})
console.log(sum)
计算数组中元素出现的次数
const arr = ['jack', 'tom', 'rose', 'tom']
// 计算数组中元素出现的次数
// reduce 返回累加器
const allNames = arr.reduce((acc, current) => {
if (current in acc) {
acc[current]++
} else {
acc[current] = 1
}
return acc
}, {})
console.log(allNames)
// { jack: 1, tom: 2, rose: 1 }
some
判断数组中是否至少有一个元素是满足条件的 - 返回布尔值
语法:
var bool = 数组.some(function(v[,i,a]){
// v是遍历出的每个元素
// i是每个v对应的下标
// a当前正在遍历的数组
return 条件
})
例:
var bool = arr.some(function (v) {
return v < 60
})
console.log(bool)
every
判断数组中是否所有元素都满足条件
语法:
var bool = 数组.every(function(v[,i,a]){
// v是遍历出的每个元素
// i是每个v对应的下标
// a当前正在遍历的数组
return 条件
})
例:
var bool = arr.every(function (v) {
return v >= 60
})
console.log(bool)
find
找数组中第一个满足条件的元素 - 返回这个元素
语法:
var ele = 数组.find(function(v[,i,a]){
// v是遍历出的每个元素
// i是每个v对应的下标
// a当前正在遍历的数组
return 条件
})
例:
var arr = [120, 50, 90, 60, 30, 70, 15]
var ele = arr.find(function (v) {
return v < 60
})
console.log(ele) // 50
findIndex
找数组中第一个满足条件的元素的下标 - 返回这个元素对应的下标
语法:
var index = 数组.findIndex(function(v[,i,a]){
// v是遍历出的每个元素
// i是每个v对应的下标
// a当前正在遍历的数组
return 条件
})
例:
var arr = [120, 50, 90, 60, 30, 70, 15]
var index = arr.findIndex(function (v) {
return v < 60
})
console.log(index)
Array.isArray
检测一个变量是否是数组 - 返回布尔值
语法:
Array.isArray(被检测的变量)
Array.from(arrayLike[,mapFn,thisArg])
接收一个类数组的迭代对象,返回一个新数组
Array.from('foo')
// [ "f", "o", "o" ]
// 数组去重
const set = new Set(['foo', 'bar', 'baz', 'foo']);
Array.from(set);
// [ "foo", "bar", "baz" ]
// 第二个参数可操作数组元素
console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]