数组的方法:专属于数组的函数。
我们从以下几个方面分析,分别是功能、参数、返回值以及是否改变原数据
- arr.push()
功能:在数组最后新增
参数:要新增的数据
返回值:增加数据之后的数组长度
是否改变原数据:是
var arr = ["hello",4,5,6,"world"]; //原数组
console.log(arr); //打印原数组
arr.push("hhh"); //新增数据
console.log(arr); //打印新增数据后的数组
var res = arr.push("hhh"); // 返回值
console.log(res); //打印返回值
2.arr.unshift()
功能:在数组开始新增
参数:要新增的数据
返回值:增加数据之后的数组长度
是否改变原数据:是
var arr = ["hello",4,5,6,"world"]; //原数组
console.log(arr); //打印原数组
arr.unshift("hhh"); //新增数据
console.log(arr); //打印新增数据后的数组
var res = arr.unshift("hhh"); // 返回值
console.log(res); //打印返回值
3、arr.pop()
功能:删除数组最后一个元素
参数:没有参数
返回值:删除的数据
是否改变原数据:是
var arr = ["hello",4,5,6,"world"]; //原数组
console.log(arr); //打印原数组
var res = arr.pop(); // 返回值
console.log(arr); //打印新增数据后的数组
console.log(res); //打印返回值
4、arr.shift()
功能:删除数组开头数据
参数:没有参数
返回值:删除的数据
是否改变原数据:是
var arr = ["hello",4,5,6,"world"]; //原数组
console.log(arr); //打印原数组
var res = arr.shift(); // 返回值
console.log(arr); //打印删除数据后的数组
console.log(res); //打印返回值
5、arr.splice()
功能:删除指定数据,并替换
参数:参数1:开始删除的位置
参数2:要删除的个数
参数3~:要插入到删除位置的数据,可以插入多个数据
返回值:删除了的数据,以数组形式返回
是否改变原数组:是
var arr = ["hello",4,5,6,"world"]; //原数组
console.log(arr); //打印原数组
// var res = arr.splice(0,1,5,333); // 返回值
// //从数组的第0位开始删,删除1位,在删除位置插入5和333,可以插入多个数据
// var res = arr.splice(1); // 返回值
//从数组的第1位开始删除,删到最后
var res = arr.splice(1,2); // 返回值
//从数组的第1位开始删除,删除2位
console.log(arr); //打印删除数据后的数组
console.log(res); //打印返回值
6、arr.slice()
功能:截取
参数:参数1:开始截取的位置
参数2:截取到指定位置的前一个
返回值:截取出来的新数组
是否改变原数据:否
var arr = ["hello",4,5,6,"world"]; //原数组
console.log(arr); //打印原数组
var res = arr.slice(2,5); // 返回值
//从数组(数组从0开始)第2位开始截取,截取到5-1=4位
var res = arr.slice(1); // 返回值
//从数组(数组从0开始)第1位开始截取,截取最后
console.log(arr); //打印截取之后的数组与原数组没有变化,所以不改变原数据
console.log(res); //打印返回值
7、arr.sort()
功能:排序,默认字符( Unicode编码)的排序规则
参数:情况1:无参数,默认字符的排序规则
情况2:函数,这个函数又有两个形参,该函数必须返回两个形参的差 ,
这时是数值的比较规则
返回值:排序之后的原数组
是否改变原数据:是
var arr1 = [11,5,8,9,21];
console.log(arr1);
// var res =arr1.sort();
// var res = arr1.sort(function fn(a,b){
// return a-b; //从小到大
// })
var res = arr1.sort(function fn(a,b){
return b-a; //从大到小
})
console.log(arr1);
console.log(res);
8、arr.concat()
功能:合并数组
参数:任意数据
返回值:合并之后的新数组
是否改变原数据:否
var arr1 = ["hello","world"];
var arr2 = [4,5,6];
// var res = arr1.concat(arr2);
var res = arr1.concat(12,"he",{name:"admin"},[10,2],arr2,undefined,null,NaN);
//可以合并任意数据
console.log(res); // ['hello', 'world', 4, 5, 6]
// 数字的扁平化,在合并数组时,并不会把arr2作为整体合并,而是,把它里面的数都拿出来合并
9、arr.join()
功能:使用分隔符,将数组作为字符串返回
参数:没有参数时默认逗号隔开或者以传入的字符作为分隔符
返回值:数组作为字符串返回
是否改变原数据:否
var arr = ["hello","world",1,2,3];
// var res = arr.join(); //hello,world,1,2,3
var res = arr.join("-"); //hello-world-1-2-3
console.log(res);
10、arr.reverse()
功能:反转数组,颠倒数组中元素的顺序
参数:无
返回值:返回反转之后的数组
是否改变原数据:是
var arr = [1,5,12,"world"];
console.log (arr);// [1,5,12,"world"]
arr.reverse();
console.log(arr);// ["world", 12, 5, 1]
// 改变原数据
var res = arr.reverse();
console.log(res); //返回反转后的数据
11、arr.toString()
功能:将数组转换为字符串
参数:无
返回值:返回字符串
是否改变原数据:否
var arr = [1,5,12,"world"];
var res = arr.toString();
console.log(res);
12、arr.valueOf()
功能:返回数组的原始值(一般情况下其实是数组本身),
一般有js在后台调用,并不显式的出现在代码中
参数:无
返回值:返回数组本身
是否改变原数组:否
var arr = [1,5,12,"world"];
var res = arr.valueOf();
console.log(res);
ES5新增的数组方法
1、arr.indexOf()
功能:根据数据查索引
参数:参数1:要查询的数据
参数2:开始查询的位置
返回值:索引,找到的第一个数的索引,如果找不到就返回-1
是否改变原数组:否
var arr = [4,5,3,"world",6,3,3];
console.log(arr);
arr.indexOf(4);
console.log(arr); // [4, 5, 3, "world", 6]
//不改变原数组
// var res = arr.indexOf(4); //0
// var res = arr.indexOf("world"); //3
var res = arr.indexOf(3,3); //5
//要查询的数据是3 ,从数组第3个位置开始查找,在第5个位置找到
console.log(res);
2、arr.forEach()
功能:遍历数组
参数:函数,这个函数又有三个形参(value,index,self)
形参1:数组中的数据
形参2:索引
形参3:数组本身
返回值:无
是否改变原数组:否
var arr = [1,5,12,"world"];
arr.forEach(function(value,index,self){});
console.log(arr); //[4, 5, 3, "world", 6] //不改变原数组
var res = arr.forEach(function(value,index,self){
// console.log(value);//遍历数组
// console.log(index);//索引
// console.log(self);//数组本身
});
console.log(res); //返回值:undefined那就是没有返回值
3、arr.map()
功能:遍历数组,并将修改之后的数组放在一个数组中返回
参数:函数,回调函数,有三个形参
形参1:数组中的数据
形参2:索引
形参3:数组本身
返回值:长度等同于老数组的长度的新数组,新数组内的数据是作为回调函数的返回值
是否改变原数组:否
var res = arr.map(function(value,index,self){
return value*1.3;
});
console.log(res);//[1.3, 6.5, 13]
4、arr.filter()
功能:遍历数组,并过滤数组中的数据
参数:函数,回调函数,有三个形参
形参1:数组中的数据
形参2:索引
形参3:数组本身
返回值:返回一个新数组,
新数组内的数据就是每次回调函数的返回值判断为true时,遍历到的数据
是否改变原数组:否
var arr = [4,5,3,"world",6,3,3];
var res = arr.filter(function(value,index,self){
return value > 4;
})
console.log(res); //[5, 6]
5、arr.some()
功能:遍历数组,并查询数组中的所有数据是否匹配条件
参数:函数,回调函数,有三个形参
形参1:数组中的数据
形参2:索引
形参3:数组本身
返回值:布尔值。只要有一个true数组返回值就是true,都是false才是false
是否改变原数组:否
var arr = [4,5,3,"world",6,3,3];
var res = arr.some(function(value,index,self){
// return value === 4; //true
// return typeof value === "object";//false
});
console.log(res);
6、arr.every()
功能:遍历数组,并查询数组中所有的数据是否匹配条件
参数:函数,回调函数,有三个形参
形参1:数组中的数据
形参2:索引
形参3:数组本身
返回值:布尔值,只要有一个是false,数组返回值就是false,都是true才是true
是否改变原数组:否
var arr = [4,5,3,6];
var res = arr.every(function(value,index,self){
// return value === "w"; //false
return typeof value ==="number";//true
});
console.log(res);
7、arr.reduce()
功能:遍历数组,归并
参数:
参数1:函数,回调函数,有四个形参(start,value,index,self)
形参1:上一次回调函数的初始值,
有初始值就是初始值,没有初始值,就是数组的第0个数据
形参2:数组中的数据
形参3:索引
形参4:数组本身
, 参数2:初始值
返回值:迭代数组的所有项,并构建一个最终值,由reduce返回
是否改变原数组:否
注:迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。
var arr1 = [4,5,3,6];
console.log(arr1);
var res = arr1.reduce(function(start,value,index,sel)
// {
// console.log(start,value);//参数2 4
// },"参数2");//形参1:上一次回调函数的返回值
// 有初始值,就是初始值
//没有返回值时,返回undefined
// =========================================
// {
// console.log(start,value);//4 5
// //形参1:上一次回调函数的返回值
// // 没有初始值,就是数组的第一个数据
// });
// ======================================
{
return start +value;//18 === 4+5+3+6
// 迭代数组的所有项,并构建一个最终值,由reduce返回
// 没有初始值,所以从数组的第一个数开始,依次返回形参1:形参1是上一次回调函数的返回值,最后由reduce返回,最后输出arr的返回值res就是数组里的每个元素相加的和
});
console.log(res)
8、lastInsexOf()
功能:根据指定数据,从右往左,查询在数组中出现的位置,如果没查到返回-1
参数:参数1:要查询的数据
参数2:开始查询的位置(不写时,默认从数组最后开始往前查询)
返回值:返回查询数据的索引。如果没查到返回-1
是否改变原数组:否
* lastIndexOf()方法虽然是从后往前搜索,但返回的位置是从前开始数的。
var arr = [4,6,3,"world",6];
console.log(arr);
arr.lastIndexOf(6);
console.log(arr);
// var res = arr.lastIndexOf(6);//4
//从后往前找,找到最近的获取索引
// var res = arr.lastIndexOf(6,3);//1
// var res = arr.lastIndexOf(4,2);//0
// var res = arr.lastIndexOf("world",2);//-1
console.log(res);
9、reduceRight()
功能:(与reduce类似)从数组的最后一项开始,
向前逐个遍历到第一位,迭代数组的所有项,然后构建一个最终返回的值。
参数: 同reduce。
返回值:同reduce
是否改变原数据:否