JavaScript数组方法总结
join()方法:
将数组中的所有元素都转换为字符串拼接在一起,可以传递参数来指定每个数组元素之间拼接的字符串,如果没有传递,则默认将数组元素之间的逗号一起输出
var a = [2,7,4,5,6,3];
console.log(a.join()); //2,3,4,5,6,7
console.log(a.join(" a ")); //2 a 3 a 4 a 5 a 6 a 7
console.log(a.join("")); //234567
reverse()方法:
将数组元素颠倒顺序输出(不进行排序操作)
该方法的内部实现也很简单,对数组进行遍历,元素互相交换位置
console.log(a.reverse().join()); //3,6,5,4,7,2
sort()方法:
将数组中的元素按照字母表的顺序进行排序,如果需要按照非字母表的顺序进行排序,需要给sort方法传递一个比较函数,用该函数决定了两个参数在排好序的数组中的先后顺序
console.log(a.sort((a, b)=>b-a)); //[7, 6, 5, 4, 3, 2]
console.log(a.sort((a, b)=>a-b)); //[2, 3, 4, 5, 6, 7]
slice()方法:
传递两个参数,分别代表需要返回的数组元素的开始下标和结束下标,包含第一个参数指定下标的数组元素,但是不包含第二个参数指定下标的数组元素
即所取的数组下标区间为左闭右开区间
console.log(a.slice()); //[2, 3, 4, 5, 6, 7]
console.log(a.slice(2,4)); //[4, 5]
splice()方法:
参数不定,但是第一个参数指定要插入或者删除的元素的起始位置索引,第二个参数指定应该从数组中删除的元素的个数,之后的任意个参数都是要插入到数组中的参数
该方法会改变原数组,返回一个由删除数组元素组成的数组
var arr = [1,2,3,4,5];
// 只传入一个参数,该参数代表从该索引开始之后的所有数组元素都删除
console.log(arr.splice(2)); //[3,4,5]
console.log(arr); // [1,2]
// 从下标为1的元素位置开始,删除0个元素,添加元素[6,7,8,9]到数组arr中
console.log(arr.splice(2,0,6,7,8,9)); // []
console.log(arr); // [1, 2, 6, 7, 8, 9]
pop()方法和push()方法:
这两个方法将数组当做栈来使用
pop()方法是将数组的最后一位删除,减小数组长度并返回删除的数组元素
push()方法是在数组的尾部添加一个或者多个与元素,并返回数组新的长度
// 删除了元素9
console.log(arr.pop()); //9
console.log(arr); //[1, 2, 6, 7, 8]
// 添加了两元素11,12
console.log(arr.push(11,12)); //7
unshift()方法和shift()方法:
这两个方法和上面的两个方法pop和push很像,只不过这两个方法是对数组的头部进行操作
unshift()方法是在数组的头部添加一个或者多个数组元素,数组中的元素依次后移,返回新数组的长度
shift()方法是从数组的头部删除一个元素并返回,后面的元素依次前移,填补数组头部的空缺
// 在头部添加两个元素0,111
console.log(arr.unshift(0,111)); //9
console.log(arr); //[0, 111, 1, 2, 6, 7, 8, 11, 12]
// 删除头部元素0
console.log(arr.shift()); // 0
toString()方法和toLocaleString()方法
toString()方法将数组元素拼接为字符串输出,和不传入参数的join()方法一样
console.log(arr.toString()); //111,1,2,6,7,8,11,12
console.log(arr.toLocaleString()); //111,1,2,6,7,8,11,12
forEach()方法:
从头到尾遍历数组,第一个参数接收一个函数,这个函数有三个参数:数组元素,元素的索引,数组本身,通常只需要第一个参数,后面两个参数可以省略
方法的第二个参数是可选的,如果有第二个参数,则调用的函数被看做是调用第二个参数的方法
var data = [1,2,3,4,5];
var sum = 0;
data.forEach(function (value){
sum += value;
})
console.log(sum); //15
map()方法:
调用数组的每个元素给指定的函数,并返回一个数组
var etc = [2,3,4,5];
var atc = etc.map((ele)=>ele*2);
console.log(atc); //[4, 6, 8, 10]
filter()方法:
传递一个用来逻辑判定的函数,该函数返回true或者false,筛选出数组中符合条件的数组元素并返回
var array = [1,2,3,4,5,6,7,8,9,10];
var arrax = array.filter((ele) => ele%2==0);
console.log(arrax); //[2, 4, 6, 8, 10]
every()方法和some()方法:
对数组元素应用指定的函数进行判定,返回true或者false
every()方法是指数组中的所有元素通过判定函数返回true时,该方法返回true
some()方法是只要有一个元素使得判定函数返回true,该方法就返回true
var ever = [1,2,3,4];
var eve = ever.every((ele) => ele > 3);
console.log(eve); // false
var aver = ever.some((ele) => ele >3 );
console.log(aver); // true
reduce()方法和reduceRight()方法:
使用指定的函数将数组元素进行组合,生成单个的值
reduce()方法需要两个参数,第一个参数是执行简化操作的函数,使用某种方法将两个值组合或者化简为一个值,并返回化简后的值,第二个参数是可选的,传递给函数作为初始值
reduce()方法传递的函数可以接收四个参数,其中第一个参数在第一次调用时使用的是reduce()方法的第二个参数,即初始值,以后的每次调用,该参数代表上一轮执行函数的结果
第二到四的参数分别为数组元素,数组索引和数组本身
reduceRight()方法和reduce()方法传递的参数一样,只是reduceRight()方法是从数组的尾部开始执行
var red = [1,2,3,4,5,6];
var redu = red.reduce((x,y) => x*y);
console.log(redu); // 720
var reda = red.reduceRight((x,y) => x+y);
console.log(reda); // 21
indexOf()方法和lastIndexOf()方法
indexOf()方法和lastIndexOf()方法搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引,没有找到就返回-1
这两个方法接收两个参数,第一个是需要搜索的值,第二个是可选的参数,该参数指定数组索引,从哪里开始搜索,如果省略该参数,则从头搜索,该参数也可以是负数,指定相对数组末尾的偏移量
indexOf()方法从头开始搜索,lastIndexOf()方法从末尾开始搜索
console.log(red.indexOf(3)); // 2
console.log(red.lastIndexOf(3)); // 2