javascript中数组的常用方法
1.操作方法
分类归纳为增、删、改、查
增
- push()
- unshift()
- splice()
- concat()
push()
push() 方法接受任意数量的参数,并将它们添加到数组的墨粉,返回的是数组的长度
let arr = []
arr.push(1,2) //[1,2]
unshift()
unshift 在数组的开头添加任意的值,同事返回新数组的长度
let arr = [1]
arr.unshift(2,3) //[2,3,1]
splice()
splice() 可传入3个参数,分别是开始的位置、0(要删除的数组量)、插入的元素,最后返回的是空数组
let arr = [1,2,3]
arr.splice(1,0,4,5) // [1,4,5,2,3]
concat()
concat() 两个数组拼接,会将参数添加到末尾,返回构建好的数组,同时不会影响新数组
let arr = [1,2,3,4]
let arr1 = [1,2,5,6]
let arr2 = arr.concat(arr1) // [1,2,3,4,1,2,5,6]
删
- pop()
- shift()
- splice()
- slice()
pop()
pop() 方法用于删除数组的最后一项,同时减少数组的length 值,返回的是被删除的项
let arr = [1,2]
arr.pop() // [1]
shift()
shift() 方法用于删除数组的第一项,同时会减少length值,并且返回的是被删除的项
let arr = [1,2,3,4]
arr.shift() // [2,3,4]
splice()
splice() 传入两个参数,分别是开始的位置,以及删除的元素数量,返回的是被删除的元素
let arr = [1,2,3,4]
arr.splice(1,1) //[1,3,4]
slice()
slice() 用于创建一个包含原有数组中一个或多个元素的新数组,不会影响新数组
let arr = [1,2,3,4,5,6]
let arr1 = arr.slice(1) // [2,3,4,5,6]
let arr2 = arr.slice(1,4) //[2,3,4]
改
- splice()
splice
splice 传入3个参数,分别是开始位置,删除的元素数量,要插入的多个元素,返回的是被删除的数组,对原数组产生影响
let arr = [1,2,3,4,5]
arr.splice(1,1,8,9) //[1,8,9,3,4,5]
查
- indexOf()
- includes()
- find()
indexOf()
indexOf() 返回要查找的元素在数组的位置,如果没找到则返回-1
let arr = [1, 2, 3, 4, 5, 4, 3, 2, 1]
arr.indexOf(4) //3
includes()
==includes()==返回要查找的元素是否存在数组中,找到则返回true,反之返回false
let arr = [1, 2, 3, 4, 5, 4, 3, 2, 1];
arr.includes(4) // true
find()
find() 返回第一个匹配的元素
letpeople = [
{
name: "Matt",
age: 27
},
{
name: "Nicholas",
age: 29
}
];
people.find((element, index, array) => element.age < 28) // // {name: "Matt", age: 27}
2.排序方法
数组有两个方法可以用来对元素重新排序
- reverse()
- sort()
reverse()
数组元素反向排序
let values = [1,2,3,4,5]
values.reverse() //[5,4,3,2,1]
sort()
==sort()==函数接一个比较函数,用于判断哪个值应该在前面
function compare(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
let values = [0, 1, 5, 10, 15];
values.sort(compare); // [0,1,5,10,15]
3.转换方法
- join()
- split()
join()
join() 方法接收一个参数,即字符串间隔符,返回包含所有项的字符串
let arr= [1,2,3];
let str = arr.join("||") // 1||2||3
split()
split() 方法是接收一个字符串,将字符切割成数组
let str = '1||2||3'
let arr = str.spit('||') //[1,2,3]
迭代方法
常用来迭代数组的方法(都不改变原数组)
- some()
- every()
- forEach()
- filter()
- map()
some()
对数组每一项都运行传入函数,如果有一项函数返回true,则这个方法返回true
let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let someResult = numbers.some((item, index, array) => item > 2);
console.log(someResult) // true
every()
对数组每一项都运行传入的函数,如果对每一项函数都返回 true ,则这个方法返回 true,只要有一项不为true,则返回false
let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let everyResult = numbers.every((item, index, array) => item > 2);
console.log(everyResult) // false
forEach()
对数组每一项都运行传入的函数,没有返回值
let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
numbers.forEach((item, index, array) => {
// 执行某些操作
});
filter()
对数组每一项都运行传入的函数,函数返回 true 的项会组成数组之后返回
let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let filterResult = numbers.filter((item, index, array) => item > 2);
console.log(filterResult); // 3,4,5,4,3
map()
对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组
let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
let mapResult = numbers.map((item, index, array) => item * 2);
console.log(mapResult) // 2,4,6,8,10,8,6,4,2