1.可以存放一组数据;
2.当需要操作多个数据时;
1.字面量方式
var arr1 = [1,2,3];
2.构造函数方式
功能:用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
参数:concat(data1,data2,...);所有参数可选,要合并的数据;data为数组时,将data合并到原数组;data为具体数据时直接添加到原数组尾部;省略时创建原数组的副本。
var arr1 = [1,2,3]; var arr2 = arr1.concat("hello","world"); console.log(arr2); //[1, 2, 3, "hello", "world"] console.log(arr1); //[1, 2, 3]---原数组未改变
var arr = [1,2,3]; console.log(arr.join()); //1,2,3 console.log(arr.join("-")); //1-2-3 console.log(arr); //[1,2,3]---原数组未改变
var arr = [1,2,3]; console.log(arr.pop()); //3 console.log(arr); //[1,2]---原数组被改变
var arr = [1,2,3]; console.log(arr.shift()); //1 console.log(arr); //[2,3]---原数组被改变
console.log(arr.unshift("hello","world")); //5 console.log(arr); //["hello", "world", 1, 2, 3]---原数组被改变
var arr = [1,2,3]; console.log(arr.push("hello")); //4 console.log(arr); //[1, 2, 3, "hello"]---原数组被改变
var arr = [1,2,3]; console.log(arr.reverse()); //[3,2,1] console.log(arr); //[3,2,1]---原数组被改变
var arr = [1,2,3,4,5,6]; console.log(arr.slice(1,3)); //[2,3] console.log(arr.slice(1)); //[2,3,4,5,6] console.log(arr.slice(-4,-1)); //[3,4,5] console.log(arr.slice(-2)); //[5,6] console.log(arr.slice(1,-2)); //[2,3,4] console.log(arr); //[1,2,3,4,5,6]---原数组未改变
var arr = [2,1,5,8,6]; console.log(arr.sort()); //[1,2,5,6,8] console.log(arr); //[1,2,5,6,8]---原数组被改变
var arr = [2018,9,3,555,666,1024]; console.log(arr.sort()); //[1024,2018,3,555,666,9] console.log(arr); //[1024,2018,3,555,666,9]---原数组被改变
var arr = [2018,6,1024,888,520]; console.log(arr.sort(fn)); //[6,520,888,1024,2018] console.log(arr); //[6,520,888,1024,2018]---原数组被改变 function fn(a,b) { return a-b; //升序 return b-a; //降序 }
var arr = [1,2,3,4,5]; console.log(arr.splice()); //[] console.log(arr); //[1,2,3,4,5]---无影响
var arr = [1,2,3,4,5]; console.log(arr.splice(2)); //[3,4,5] console.log(arr); //[1,2]---原数组被改变
var arr = [1,2,3,4,5]; console.log(arr.splice(2,2)); //[3,4] console.log(arr); //[1,2,5]---原数组被改变
var arr = [1,2,3,4,5]; console.log(arr.splice(2,2,"a","b")); //[3,4] console.log(arr); //[1,2,"a","b",5]---原数组被改变
var arr = [1,2,3,4,5]; console.log(arr.splice(2,0,"a","b")); //[] console.log(arr); //[1,2,"a","b",3,4,5]---原数组被改变
var arr = [1,2,3]; console.log(arr.toString()); //1,2,3 console.log(arr); //[1,2,3]---原数组未改变
var arr = ["h","e","l","l","o"]; console.log(arr.indexOf("l")); //2 console.log(arr.indexOf("l",3)); //3 console.log(arr.indexOf("l",4)); //-1 console.log(arr.indexOf("l",-1)); //-1 console.log(arr.indexOf("l",-3)); //2
var arr = ["h","e","l","l","o"]; console.log(arr.lastIndexOf("l")); //3 console.log(arr.lastIndexOf("l",3)); //3 console.log(arr.lastIndexOf("l",1)); //-1 console.log(arr.lastIndexOf("l",-3)); //2 console.log(arr.lastIndexOf("l",-4)); //-1
var arr = [22,55,66,77,88]; var a = arr.forEach(function(value,index,self){ console.log(value + "--" + index + "--" + (arr === self)); }) // 打印结果为: // 22--0--true // 55--1--true // 66--2--true // 77--3--true // 88--4--true console.log(a); //undefined---forEach没有返回值 //该方法为遍历方法,不会修改原数组
// 功能1:同forEach var arr = [22,55,66,77,88]; var a = arr.map(function(value,index,self){ console.log(value + "--" + index + "--" + (arr === self)); }) // 打印结果为: // 22--0--true // 55--1--true // 66--2--true // 77--3--true // 88--4--true //功能2:每次回调函数的返回值被map组成新数组返回 var arr = ["Tom","Jack","Lucy","Lily","May"]; var a = arr.map(function(value,index,self){ return "hi:"+value; }) console.log(a); //["hi:Tom", "hi:Jack", "hi:Lucy", "hi:Lily", "hi:May"] console.log(arr); //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变
//功能1:同forEach var arr = ["Tom","Jack","Lucy","Lily","May"]; var a = arr.filter(function(value,index,self){ console.log(value + "--" + index + "--" + (arr === self)) }) // 打印结果为: // Tom--0--true // Jack--1--true // Lucy--2--true // Lily--3--true // May--4--true //功能2:当回调函数的返回值为true时,本次的数组值返回给filter,被filter组成新数组返回 var arr = ["Tom","Jack","Lucy","Lily","May"]; var a = arr.filter(function(value,index,self){ return value.length > 3; }) console.log(a); //["Jack", "Lucy", "Lily"] console.log(arr); //["Tom", "Jack", "Lucy", "Lily", "May"]---原数组未改变
//demo1: var arr = ["Tom","abc","Jack","Lucy","Lily","May"]; var a = arr.every(function(value,index,self){ console.log(value + "--" + index + "--" + (arr == self)) }) // 打印结果为: // Tom--0--true //因为回调函数中没有return true,默认返回undefined,等同于返回false //demo2: var arr = ["Tom","abc","Jack","Lucy","Lily","May"]; var a = arr.every(function(value,index,self){ console.log(value + "--" + index + "--" + (arr == self)) return value.length < 4; }) // 打印结果为: // Tom--0--true // abc--1--true // Jack--2--true //因为当遍历到Jack时,回调函数到return返回false,此时Jack已经遍历,但是后面数据就不再被遍历了 //demo3: var arr = ["Tom","abc","Jack","Lucy","Lily","May"]; var a = arr.every(function(value,index,self){ console.log(value + "--" + index + "--" + (arr == self)) return true; }) // 打印结果为: // Tom--0--true // abc--1--true // Jack--2--true // Lucy--3--true // Lily--4--true // May--5--true //因为每个回调函数的返回值都是true,那么会遍历数组所有数据,等同于forEach功能
//demo1: var arr = ["Tom","abc","Jack","Lucy","Lily","May"]; var a = arr.every(function(value,index,self){ return value.length > 3; }) console.log(a); //false //demo2: var arr = ["Tom","abc","Jack","Lucy","Lily","May"]; var a = arr.every(function(value,index,self){ return value.length > 2; }) console.log(a); //true
//demo1: var arr = ["Tom","abc","Jack","Lucy","Lily","May"]; var a = arr.some(function(value,index,self){ console.log(value + "--" + index + "--" + (arr == self)) return value.length > 3; }) // 打印结果为: // Tom--0--true // abc--1--true // Jack--2--true //demo2: var arr = ["Tom","abc","Jack","Lucy","Lily","May"]; var a = arr.some(function(value,index,self){ console.log(value + "--" + index + "--" + (arr == self)) return true; }) // 打印结果为: // Tom--0--true //demo3: var arr = ["Tom","abc","Jack","Lucy","Lily","May"]; var a = arr.some(function(value,index,self){ console.log(value + "--" + index + "--" + (arr == self)) return false; }) // 打印结果为: // Tom--0--true // abc--1--true // Jack--2--true // Lucy--3--true // Lily--4--true // May--5--true
//demo1: var arr = ["Tom","abc","Jack","Lucy","Lily","May"]; var a = arr.some(function(value,index,self){ return value.length > 3; }) console.log(a); //true //demo2: var arr = ["Tom","abc","Jack","Lucy","Lily","May"]; var a = arr.some(function(value,index,self){ return value.length > 4; }) console.log(a); //false
//demo1:不省略initial参数,回调函数没有返回值 var arr = [10,20,30,40,50]; arr.reduce(function(prev,now,index,self){ console.log(prev + "--" + now + "--" + index + "--" + (arr == self)) }, 2019) // 打印结果为: // 2019--10--0--true // undefined--20--1--true // undefined--30--2--true // undefined--40--3--true // undefined--50--4--true // 此时回调函数没有return,所以从第二次开始,prev拿到的是undefined //demo2:省略initial参数,回调函数没有返回值 var arr = [10,20,30,40,50]; arr.reduce(function(prev,now,index,self){ console.log(prev + "--" + now + "--" + index + "--" + (arr == self)) }) // 打印结果为:第一次,回调函数的第一个参数是数组的第一项。第二个参数就是数组的第二项 // 10--20--1--true // undefined--30--2--true // undefined--40--3--true // undefined--50--4--true // 此时回调函数没有return,所以从第二次开始,prev拿到的是undefined //demo3:不省略initial参数,回调函数有返回值 var arr = [10,20,30,40,50]; arr.reduce(function(prev,now,index,self){ console.log(prev + "--" + now + "--" + index + "--" + (arr == self)); return "hello"; }, 2019) // 打印结果为: // 2019--10--0--true // hello--20--1--true // hello--30--2--true // hello--40--3--true // hello--50--4--true // 此时回调函数有return,所以从第二次开始,prev拿到的是回调函数return的值 //demo4:省略initial参数,回调函数有返回值 var arr = [10,20,30,40,50]; arr.reduce(function(prev,now,index,self){ console.log(prev + "--" + now + "--" + index + "--" + (arr == self)); return "hello"; }) // 打印结果为:第一次,回调函数的第一个参数是数组的第一项。第二个参数就是数组的第二项 // 10--20--1--true // hello--30--2--true // hello--40--3--true // hello--50--4--true // 此时回调函数有return,所以从第二次开始,prev拿到的是回调函数return的值 //demo5:使用reduce计算数组中所有数据的和 var arr = [10,20,30,40,50]; var sum = arr.reduce(function(prev,now,index,self){ return prev + now; }) console.log(sum); //150 // 回调函数的最后一次return的结果被返回到reduce方法的身上 //demo6:使用reduce计算数组中所有数据的和 var arr = [10,20,30,40,50]; var sum = arr.reduce(function(prev,now,index,self){ return prev + now; }, 8) console.log(sum); //158 // 回调函数的最后一次return的结果被返回到reduce方法的身上 // 因为reduce有第二个参数initial,在第一次执行时被计算,所以最终结果被加上8
原文:https://www.cnblogs.com/yangbodeboke/p/11443663.html